Once upon a time I discovered the very convenient profile-sync-daemon package in the AUR. This daemon essentially mounts and syncs your user browser profile to tmpfs (RAM) for improved performance and reduced writes to your hard drive. Similar tools exist for other profiles and caches.
At the time I discovered that tool I could comprehend how it worked in theory, but didn’t have the technical skills to apply it myself. That has changed. I always feel a sense of pride and accomplishment when I’m able to figure something out “manually” or the “DIY” way rather than relying on pre-packaged toolsets. I like learning, so when I’m able to learn and apply something, that makes me happy.
So, that brings mere here. Manually syncing my browser profiles, browser cache, and user cache to tmpfs (which uses RAM). The basic chain of evens goes like this:
- Machine powers on > temporary directories get created
- User logs in > profiles / caches are synced from back up to temporary / volatile directories
- Every 5 minutes, volatile directories are backed up to diskspace.
1) Creating volatile directories on boot.
/usr/lib/tmpfiles.d and you will find a list of files that hte sytem creates on boot. Now, create a file named
cache.conf that contains the following:
#type path mode uid gid age argument d /tmp/.cache 0700 1000 1000 - - d /tmp/.chromium 0700 1000 1000 - -
d indicates directory,
path is the directory you want to create. In this case, one for our use cache and the other for our
mode refers to directory permissions, and
gid refer to the user that wil own the directories.
2) Create a backup script and run it.
~/scripts/tmpfs_cache_backup.sh ------------------------------- #!/bin/sh # sync and backup tmpfs cache rsync -aAXv /tmp/.cache/ $HOME/.cache-bk/ rsync -aAXv /tmp/.chromium/ $HOME/.chromium-bk/
Then, you can run the script to make sure everything backs up properly.
tar instead of
rsync doesn’t seem to work, specifically when it comes to restoration at login.
3) Automate the backup process.
For this we are going to use
cron. Add the following to your configuration file (such as
~/user.crontab) and activate it with
# minute hour day_of_month month day_of_weekcommand */5 * * * * /usr/bin/sh /home/austin/scripts/tmpfs_cache_bk.sh
4) Restoration and linking directories.
Now that your directories are safely backed up, you can go ahead and remove them.
$ rm -r ~/.cache $ rm -r ~/.config/chromium/Default
Next, we need to create the restoration script that will run when the user logs in. This is what I use:
~/scripts/tmpfs_cache_restore.sh --------------------------------- #!/bin/sh # populate user tmpfs cache # for use with ~/scripts/tmpfs_cache_bk.sh # restore from backup rsync -aAXv $HOME/.cache-bk/ $HOME/.cache rsync -aAXv $HOME/.chromium-bk/ $HOME/.config/chromium # create links ln -sf /tmp/.cache $HOME/.cache ln -sf /tmp/.chromium $HOME/.config/chromium/Default
This restores our backup to the volatile folders that get created on boot (and destroyed on shutdown). Then, it creates symbolic links from
the newly populated directories (mounted as tmpfs) to the userspace directories where programs will look to find them (e.g.
expects to find the Default profile in
5) Login configuration.
Next, we want to make sure the restoration script runs immediately when the user logs in. To do that we need to edit
~/.xinitrc ---------- ... ...... ......... $HOME/scripts/tmpfs_cache_restore.sh # populate tmpfs cache
Finally, make sure both scripts are executable:
$ chmod +x ~/scripts/tmpfs_cache_bk.sh
$ chmod +x ~/scripts/tmpfs_cache_restore.sh
Now reboot and enjoy a (theoretically) much speedier browser and user experience. Cheers!