本篇文章,要做的是使用 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

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料