本篇文章,要做的是使用 Linux 作業系統,定期對某個資料夾進行壓縮備份。
做法是先撰寫一個小型程式,再將該程式寫入排程即可。
以下的 OS 是使用 CentOS,但是 Linux 是採開放源的,所以相信都大同小異。
會特別註明是 CentOS 的原因是因為每個 Linux 放置 Apache 的地方,可能會不同。
例如 CentOS 就和 openSUSE 就不同,但是備份方式是一樣的。
範例程式是要備份 Apache 的 Web 資料,以及 MySQL 的資料庫。
程式命名為 backup.sh,放置在 /home/backup 下。
----------------------------------------------------------------------
#!/bin/bash # 0. Get the date messages and backup directory day=`date +%Y-%m-%d` basedir="/home/backup" # 1. MySQL ( PATH = /var/lib/mysql ) /etc/init.d/mysqld stop cd /var/lib tar -zcf "$basedir"/mysql."$day".tar.gz mysql 2> /dev/null /etc/init.d/mysqld start # 2. HTTP ( PATH = /var/www/html ) /etc/init.d/httpd stop cd /var/www tar -zcf "$basedir"/html."$day".tar.gz html 2> /dev/null /etc/init.d/httpd start
----------------------------------------------------------------------
備份後的資料,會放置在 /home/backup 裡面,檔名的格式舉例為 mysql.2009-04-10.tar.gz 。
再來就是要將此程式寫入排程。
# echo '30 1 * * 3 root /home/backup/backup.sh' >> /etc/crontab
上面指令的意思是,每個星期三的凌晨 1:30 會使用 root 的身份執行 backup.sh 這個剛剛編輯的程式。
echo 的意思請自行去查略,在此不敘述。
兩個『 >> 』的意思是將『 '30 1 * * 3 root /home/backup/backup.sh' 』這行,寫在『 /etc/crontab 』這個檔案的最後面。
至此,我們就做完了我們要做的目的。
我還在研究如何保留備份的次數,例如只保留七個星期的備份量,七個星期前的會自動刪除。
如果有人會,也希望能分享,謝謝。
轉自
http://www.wretch.cc/blog/jeter1776/15027921