發佈日期:
如何在Ubuntu Desktop (9.10, 10.04)下‧執行定期的檔案至DVD碟備份工作(以7z作壓縮)
01. 備份工作主要分為3部份。第1部份先將相關檔案、資料夾以7z方式,加以密碼作壓縮。第2部份會將已壓縮檔案,燒錄至DVD碟內。第3部份將DVD碟內資料解壓,再跟原來檔案比較,以保證DVD碟內檔案跟原來的一致。02. 如使用7z壓縮,請先安裝7z套件。
sudo apt-get install p7zip-full
03. 建立7z壓縮執行檔及貼上以下內容。以下例子為以7z方式,每個檔案不太於2GB,以密碼password作保護,將/var/lib/mysql、/data資料夾內資料,壓縮到/backup/monthly資料夾內,以今天日期命名的檔案($file.7z),及把壓縮過程文件,寫入到/backup/monthly資料夾內,以今天日期命名的檔案中($file.log)。
sudo gedit zip.sh
clear file=$(date +"%Y%m%d") sudo 7z a -v2048m -t7z -ppassword /backup/monthly/$file.7z /var/lib/mysql /data > /backup/monthly/$file.log 2>&1
04. 壓縮完成後,在/backup/monthly資料夾內,會找到今天日期命名的檔案.7z及今天日期命名的檔案.log。
05. 建立檔案名為initial.tmp,不需要有任何內容,用於燒錄時檢查,DVD碟是否第一次燒錄(First session)或是繼續燒錄(Continuous session)。
06. DVD燒錄前,如是DVD-RW,需保證己格式化。
07. 建立燒錄執行檔及貼上以下內容。以下內容為先掛上DVD燒錄器,再檢查DVD碟內是否存在initial.tmp檔案,如沒有則代表第一次燒錄(First session),否則則是繼續燒錄(Continuous session),完成後卸下燒錄器。
sudo gedit burning.sh
clear file=$(date +"%Y%m%d") umount /dev/sr0 umount /media/cdrom0 mount /dev/sr0 /media/cdrom0 if [ -e /media/cdrom0/initial.tmp ]; then echo "Not first session" growisofs -dvd-compat -input-charset utf-8 -V "backup_disk" -M /dev/sr0 -R -J /backup/monthly/$file.* > /data/hd_status/burning.log 2>&1 else echo "First session" growisofs -dvd-compat -input-charset utf-8 -V "backup_disk" -Z /dev/sr0 -R -J /backup/monthly/initial.tmp /backup/monthly/$file.* > /data/hd_status/burning.log 2>&1 fi umount /dev/sr0 umount /media/cdrom0
08. 建立檢查執行檔及貼上以下內容。以下內容為先檢查/tmp/monthly_backup暫存資料夾是否存在,如不存在則建立資料夾。再掛上DVD燒錄器,將DVD碟用量及內裡檔案解壓出來,解壓過程文件則寫入/data/hd_status/dvd_extract.log檔案內。之後使用cmp命令,比較暫存資料夾檔案及原來檔案內容,比較過程文件寫入/data/hd_status/dvd_compare.log檔案內。最後刪除暫存資料夾。
sudo gedit check.sh
#!/bin/sh if [ -e /tmp/monthly_backup ]; then echo "/tmp/monthly_backup folder exist" else echo "/tmp/monthly_backup folder is not exist. Create new one" mkdir /tmp/monthly_backup fi cd /tmp/monthly_backup file=$(date +"%Y%m%d") umount /dev/sr0 umount /media/cdrom0 mount /dev/sr0 /media/cdrom0 if [ -e /media/cdrom0/$file.log ]; then echo "find $file.log on DVD disk" df -l /dev/sr0 > /data/hd_status/backup_dvd.log sudo rm /backup/monthly/$file.* fi echo "starting extract zip file" if [ -e /media/cdrom0/$file.7z ]; then 7z x -ppassword /media/cdrom0/$file.7z > /data/hd_status/dvd_extract.log else 7z x -ppassword /media/cdrom0/$file.7z.001 > /data/hd_status/dvd_extract.log fi umount /dev/sr0 umount /media/cdrom0 echo "comparing" find /tmp/monthly_backup -name "*" > /tmp/file_list.log sed 's/\\/tmp\\/monthly_backup//' /tmp/file_list.log > /tmp/path_list.log exec < /tmp/path_list.log read line echo "Compare process starting..." > /data/hd_status/dvd_compare.log echo "" >> /data/hd_status/dvd_compare.log while read line do echo "Comparing file," $line >> /data/hd_status/dvd_compare.log cmp /tmp/monthly_backup$line $line >> /data/hd_status/dvd_compare.log echo "" >> /data/hd_status/dvd_compare.log done rm -R /tmp/monthly_backup rm /tmp/file_list.log rm /tmp/path_list.log
09. 最後在系統中,加入定期工作(cron job),分別執行zip.sh、burning.sh、及check.sh檔案。
發佈留言