I've started with a simple script to compress Firefox's sqlite databases before creating a backup of my $HOME directory
alex@xubuntu:~$ cat bin/vacuumFirefox.sh #!/bin/bash [ -n "$(pidof firefox)" ] && { echo "ERROR: firefox is still running, close it first!" exit 1 } counterBefore=0 counterAfter=0 for i in ~/.mozilla/firefox/*/*.sqlite; do fileSizeBefore=$(du -b $i|awk '{ print $1 }') counterBefore=$((counterBefore + fileSizeBefore)) sqlite3 "$i" vacuum fileSizeAfter=$(du -b $i|awk '{ print $1 }') counterAfter=$((counterAfter + fileSizeAfter)) echo "$fileSizeBefore $fileSizeAfter - $(basename $i)" done echo "Bytes saved: $(( counterBefore - counterAfter ))"
alex@xubuntu:~$ bin/vacuumFirefox.sh 589824 589824 - addons.sqlite 98304 98304 - chromeappsstore.sqlite 7168 7168 - content-prefs.sqlite 524288 4096 - cookies.sqlite 6144 3072 - downloads.sqlite 589824 589824 - extensions.sqlite 196608 163840 - forecastfox.sqlite 128000 8192 - formhistory.sqlite 5120 4096 - permissions.sqlite 10485760 344064 - places.sqlite 2048 2048 - search.sqlite 112640 111616 - signons.sqlite 262144 262144 - stylish.sqlite 34938880 34938880 - urlclassifier3.sqlite 3072 3072 - webappsstore.sqlite 524288 524288 - addons.sqlite 229376 229376 - content-prefs.sqlite 524288 131072 - cookies.sqlite 98304 98304 - downloads.sqlite 458752 458752 - extensions.sqlite 196608 196608 - formhistory.sqlite 65536 65536 - permissions.sqlite 10485760 1179648 - places.sqlite 327680 327680 - signons.sqlite 98304 98304 - webappsstore.sqlite Bytes saved: 20518912
Later this script became a part of a bigger script to backup my $HOME:
alex@xubuntu:~$ cat bin/backupHome.sh #!/bin/bash homeDir=$HOME destDir=/media/nas/Alex/backup archName="$(whoami).$(hostname)" # files or directories to exclude printExcludes() { awk '{printf("--exclude '\''%s'\'' ",$1)}' ‹‹EOEXCL .encfs .davfs2 .smbcredentials .cache .eagle .dbus .pulse* .thumbnails Downloads EOEXCL } # vacuum firefox's sqlite files vacuumFirefox() { pidof firefox && { echo "ERROR: firefox is still running, close it first!" return 1 } which sqlite3 &>/dev/null || { echo "ERROR: sqlite3 is not installed. Do 'sudo apt-get install sqlite3' first" return 1 } local counterBefore=0 local counterAfter=0 local fileSizeBefore fileSizeAfter local hDir=$homeDir [ -z "$hDir" ] && hDir=~/ for i in "$hDir"/.mozilla/firefox/*/*.sqlite; do fileSizeBefore=$(du -b $i|awk '{ print $1 }') counterBefore=$((counterBefore + fileSizeBefore)) sqlite3 "$i" vacuum fileSizeAfter=$(du -b $i|awk '{ print $1 }') counterAfter=$((counterAfter + fileSizeAfter)) echo "$fileSizeBefore $fileSizeAfter - $(basename $i)" done echo "Bytes saved: $(( counterBefore - counterAfter ))" return 0 } # cleaning phase vacuumFirefox || exit 1 cd "$homeDir" xargs -d \\n -I {} bash -c "rm -rf {}" ‹‹EOLIST .thumbnails/* .cache/* .local/share/Trash/* .adobe/Flash_Player/AssetCache/* .mozilla/firefox/*/Cache/* EOLIST # creating an archive if [ -d "$destDir" ]; then exe=$(echo "tar -czf \"${destDir}/${archName}.$(date +%Y-%m-%d).tgz\" $(printExcludes) -C $homeDir ./") echo "$exe" eval "$exe" else echo "ERROR: Directory $destDir doesn't exist. Canno't create an archive" exit 1 fi
Inside of the printExcludes I'm also excluding files or directories that contain sensitive informations like passwords in open text.
Note: one can also install the BleachBit utility that can perform a similar job
No comments:
Post a Comment