Previously I used gzip as compression tool to compress the web site files and mysql database. It is still working on my Linode server. I learned something from the compairasion from this post .
So I tried to use bzip instead of gzip on my backup script.
Here is two examples.
1) Mysqldump file, which is a text sql file.
The original sql file is 52,317KB
- gzip with level 9 (best) compression: 23,227KB – Compress Ratio 44.39%
- bzip2 with default (I think it is level 9) compression: 19,666KB – Compress Ratio 37.59%
Bzip2 is smaller than gzip file. It reduced about 15%.
2) Website files, including php, jpeg, png, css, any files used in web site.
The original tar gile is 187,670KB
- gzip compression: 42,101KB – Ratio 22.43%
- bzip2 compression: 34,753KB – Ratio 18.51%
Bzip2 is better. Backup file size is reduced by about 17%.
The following screenshot is the second example.
- sites.tar is the original file.
- sites.tar.gz is compressed by gzip.
- sites.bz2 is compressed by bzip2.
Because I am using it as a backup tool, the space occuppied is very important. To save the disk space, I chose bzip2 to replace gzip.
So my mysql database backup script is changed as below:
#!/bin/bash ### MySQL Server Login Info ### MUSER="MySQL User name" MPASS="MySQL Pass" MHOST="localhost" MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" BAK="/home/usera/backup/mysql" GZIP="$(which gzip)" BZIP2="$(which bzip2)" ### FTP SERVER Login info ### FTPU="FTP User name" FTPP="FTP Pass" FTPS="backup.dreamhost.com" NOW=$(date +"%d-%m-%Y") [ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/* DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" for db in $DBS do FILE=$BAK/$db.$NOW-$(date +"%T").gz $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $BZIP2> $FILE done lftp -u $FTPU,$FTPP -e "mkdir /vps/backup/mysql/$NOW;cd /vps/backup/mysql/$NOW; mput /home/usera/backup/mysql/*; quit" $FTPS find /home/usera/backup/mysql -ctime +4 -exec rm {} \;