I regularly 'vacuum' my .sqlite files in Firefox with a programme called speedyfox. This works on my .sqlite files in my Firefox profile folder, but not on .sqlite files in other folders.
If I created a hard link in my Firefox profile folder, pointing to a file in another folder, would any action on the hard link, such as 'vacuuming' change the original file?
What is the best and easiest way to create a hard link?
Thanks.
Hard links
Re: Hard links
It appears that Speedyfox is meant to work with a web browsers Profile (folder).
A folder at that, rather then individual files.
I gather it searches for %appdata%/roaming/Mozilla/{browser}/Profiles.ini (which contains a list of [Mozilla] browser Profiles - that were defined via [Mozilla's] Profile Manager), & presents those locations by default.
(I'm guessing that it also relies on the browsers 'sqlite3' program rather then sqlite3.exe itself.)
So to me, it looks like speedyfox will not work on arbitrary .sqlite files.
(I'm not even understanding how to get it to work with a portable Profile location?)
I question the usefulness of speedyfox.
As it is, AFAIK, Mozilla automatically, periodically vacuums its' sqlite files.
As it is, (Mozilla) sqlite files are 'pre-sized' (to some value), so while the file may be 'empty' it may still yet have a 'substantial' size to it. And while speedyfox may reduce the physical size of the file on disk, it has not really accomplished anything, & may even be of a detriment.
SQLITE.vacuum.bat:
https://www.sqlite.org/
And what are you looking to do, accomplish with the hardlink?
A folder at that, rather then individual files.
I gather it searches for %appdata%/roaming/Mozilla/{browser}/Profiles.ini (which contains a list of [Mozilla] browser Profiles - that were defined via [Mozilla's] Profile Manager), & presents those locations by default.
(I'm guessing that it also relies on the browsers 'sqlite3' program rather then sqlite3.exe itself.)
So to me, it looks like speedyfox will not work on arbitrary .sqlite files.
(I'm not even understanding how to get it to work with a portable Profile location?)
I question the usefulness of speedyfox.
As it is, AFAIK, Mozilla automatically, periodically vacuums its' sqlite files.
As it is, (Mozilla) sqlite files are 'pre-sized' (to some value), so while the file may be 'empty' it may still yet have a 'substantial' size to it. And while speedyfox may reduce the physical size of the file on disk, it has not really accomplished anything, & may even be of a detriment.
SQLITE.vacuum.bat:
Code: Select all
dir *.sqlite > b4.sqlite.vacuum.TXT
echo "-------" >> b4.sqlite.vacuum.TXT
for %%i in (*.sqlite) do (sqlite3.exe %%i vacuum)
dir *.sqlite >> b4.sqlite.vacuum.TXT
pause
exit
:: also if you sqlite3.exe {filename}
:: you can type "VACUUM;" at
:: the prompt & it will do it
:: interactively
And what are you looking to do, accomplish with the hardlink?
Re: Hard links
Yes, it does work if I move the files from the relevant storage folder to the main profile folder, I then move the files back to the original storage folder.
The files I want to vacuum relate to various extensions, which place .sqlite files in various sub folders within the main storage folder.
It's necessary to vacuum Firefox every so often, as it does not do it by itself.
I want to place a link in the main profile folder, so as to save me having to move the files around each time.
the 'vacuuming' speeds up Firefox considerably, and brings down the file sizes.
The vacuuming though, isn't the issue, I'm interested in the behaviour and usage of hard links.
The files I want to vacuum relate to various extensions, which place .sqlite files in various sub folders within the main storage folder.
It's necessary to vacuum Firefox every so often, as it does not do it by itself.
I want to place a link in the main profile folder, so as to save me having to move the files around each time.
the 'vacuuming' speeds up Firefox considerably, and brings down the file sizes.
The vacuuming though, isn't the issue, I'm interested in the behaviour and usage of hard links.
Re: Hard links
There is only one copy of the file data when using multiple hard links.
Each hard link will point to the same file data.
Deleting a hard link file will delete the filename.
The file data is 'filename reference counted'.
When all filenames are deleted the file data is deleted.
Hard links share the same file data.
Changing the file data from one hard link will change the file data for all hard links.
Each hard link will point to the same file data.
Deleting a hard link file will delete the filename.
The file data is 'filename reference counted'.
When all filenames are deleted the file data is deleted.
Hard links share the same file data.
Changing the file data from one hard link will change the file data for all hard links.
Re: Hard links
Thanks David, does that mean that any action taken on a hard link, such as 'vacuuming' a .sqlite file or, for example, defragging, will affect the original file in another directory?
Can you recommend the best way to create the hard link?
Can you recommend the best way to create the hard link?
Re: Hard links
Yes, vacuuming and defragging will modify the file data.Thanks David, does that mean that any action taken on a hard link, such as 'vacuuming' a .sqlite file or, for example, defragging, will affect the original file in another directory?
All hard links point to the same file data.
From a command prompt:Can you recommend the best way to create the hard link?
mklink /h <link> <target>
Create file hardlink in PowerShell on Windows 10
Re: Hard links
Thanks so much for the info...
I managed to find a programme that allows me to create a hard link via the context menu.
I managed to find a programme that allows me to create a hard link via the context menu.
Re: Hard links
Link Shell Extension ?
So you're going to create a hardlink of /extension-data/ublock0.sqlite (uBlock Origin's data file),
& set it's target to, {Firefox/Profile Folder/} such that speedyfox will see ublock0.sqlite & vacuum it
(where it ordinarily might not, & perhaps, not sure, Mozilla too would ignore that file - because it is not "Mozilla").
So you're going to create a hardlink of /extension-data/ublock0.sqlite (uBlock Origin's data file),
& set it's target to, {Firefox/Profile Folder/} such that speedyfox will see ublock0.sqlite & vacuum it
(where it ordinarily might not, & perhaps, not sure, Mozilla too would ignore that file - because it is not "Mozilla").
Re: Hard links
I use the Firefox portable app.
I move the UBO sqlite file from its location at profile\data\storage\default\moz-extension************ to the main profile folder, vacuum the profile folder with Speedyfox, then move the file back again to its original location.
I'm doing this with all my extensions that have relatively large sqlite files.
With the hard link, I'm going to create permanent links in the profile folder for the sqlite files, so it will save me mucking around and moving files backwards and forwards each time.
It hasn't caused any problems, and it does speed things up. I also use it with Tor.
Speedyfox is quite a nice little programme, but its limitation for me is the fact that it only vacuums files in the profile folder.
I don't know of any other programme that vacuums Firefox.
I move the UBO sqlite file from its location at profile\data\storage\default\moz-extension************ to the main profile folder, vacuum the profile folder with Speedyfox, then move the file back again to its original location.
I'm doing this with all my extensions that have relatively large sqlite files.
With the hard link, I'm going to create permanent links in the profile folder for the sqlite files, so it will save me mucking around and moving files backwards and forwards each time.
It hasn't caused any problems, and it does speed things up. I also use it with Tor.
Speedyfox is quite a nice little programme, but its limitation for me is the fact that it only vacuums files in the profile folder.
I don't know of any other programme that vacuums Firefox.
Re: Hard links
Well, seemingly you should still be able to use speedyfox, but I couldn't make sense of its' command line options, just what it was looking for, so never did get it work other then with explicitly defined Profiles - that it found, automatically (& as defined in profiles.ini).
My "current" commandline is:
Where SeaMonkey is my browser, & "dumy" is my Profile name (as defined in profiles.ini).
speedyfox itself determined that.
But then, if I have a (portable, if you will) Profile in, (which is different from above, simply has the same "name"), I have no clue how to get that to work (or at least, anything I have tried has been for not).
/<program_name>:<profile_path> - optimize custom profile of program_name located at profile_path
(e.g. for portable versions of supported programs)
My "current" commandline is:
C:\SPEEDYFOX\speedyfox.exe "/SeaMonkey:dumy"
Where SeaMonkey is my browser, & "dumy" is my Profile name (as defined in profiles.ini).
speedyfox itself determined that.
But then, if I have a (portable, if you will) Profile in,
C:\TMP\SEA\dumy