轉載自Pythoner
1.創(chuàng)建Dropbox應用
需要創(chuàng)建一個Dropbox應用趟薄,可以從該網(wǎng)址進行創(chuàng)建拇厢。
2.下載并執(zhí)行dropbox_uploader.sh
dropbox_uploader是一個第三方Dropbox備份腳本赏枚,我們可以從這里獲取到目胡。
然后青扔,為該腳本添加執(zhí)行權限:
# chmod +x dropbox_uploader.sh
執(zhí)行該腳本:
# ./dropbox_uploader.sh
根據(jù)提示輸入Dropbox應用中的App key和App secret源织,許可類型選擇a,確認y微猖,復制給出的權限驗證鏈接到瀏覽器谈息,確認后回到終端按任意鍵完成。
其中凛剥,用戶可以根據(jù)自己的需求改編需要備份的目錄侠仇,以及保留舊數(shù)據(jù)的時長(比如我這里設置的是Dropbox保留7天,本地保留10天)犁珠。
接下來逻炊,為這個備份腳本增加執(zhí)行權限:
# chmod +x backup.sh
3.編寫備份腳本
編寫定時備份腳本,取名為backup.sh犁享。其代碼如下:
MYSQL數(shù)據(jù)庫帳號密碼
MYSQL_USR="root" # 數(shù)據(jù)庫帳號
MYSQL_PWD="password" # 數(shù)據(jù)庫密碼
定義需要備份的目錄
NGINX_CONF_DIR=/usr/local/nginx/conf # nginx配置目錄
WEB_DIR=/home/wwwroot # 網(wǎng)站數(shù)據(jù)存放目錄
定義備份存放目錄
DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox上的備份目錄
LOCAL_BAK_DIR=/home/backup # 本地備份文件存放目錄
定義備份文件名稱
DBBakName=DB_$(date +%Y%m%d).tar.gz
NginxConfBakName=NginxConf_$(date +%Y%m%d).tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
定義舊數(shù)據(jù)名稱
Old_DROPBOX_DIR=/$(date -d -7day +%Y-%m-%d)
OldDBBakName=DB_$(date -d -10day +%Y%m%d).tar.gz
OldNginxConfBakName=NginxConf_$(date -d -10day +%Y%m%d).tar.gz
OldWebBakName=Web_$(date -d -10day +%Y%m%d).tar.gz
cd $LOCAL_BAK_DIR
使用命令導出SQL數(shù)據(jù)庫,并且按數(shù)據(jù)庫分個壓縮
for db in `mysql -u$MYSQL_USR -p$MYSQL_PWD -B -N -e 'SHOW DATABASES' | xargs`; do
(mysqldump -u$MYSQL_USR -p$MYSQL_PWD ${db} | gzip -9 - > ${db}.sql.gz)
done
壓縮數(shù)據(jù)庫文件合并為一個壓縮文件
tar zcf $LOCAL_BAK_DIR/$DBBakName $LOCAL_BAK_DIR/*.sql.gz
rm -rf $LOCAL_BAK_DIR/*.sql.gz
壓縮Nginx配置數(shù)據(jù)
cd $NGINX_CONF_DIR
tar zcf $LOCAL_BAK_DIR/$NginxConfBakName ./*
壓縮網(wǎng)站數(shù)據(jù)
cd $WEB_DIR
tar zcf $LOCAL_BAK_DIR/$WebBakName ./*
cd /root/bin
開始上傳
./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$DBBakName $DROPBOX_DIR/$DBBakName
./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$NginxConfBakName $DROPBOX_DIR/$NginxConfBakName
./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$WebBakName $DROPBOX_DIR/$WebBakName
刪除舊數(shù)據(jù)
rm -rf $LOCAL_BAK_DIR/$OldDBBakName $LOCAL_BAK_DIR/$OldNginxConfBakName $LOCAL_BAK_DIR/$OldWebBakName
./dropbox_uploader.sh delete $Old_DROPBOX_DIR/
echo -e "Backup Done!"
4.添加crontab
編輯 /root/bin/backup.sh 并寫入以下內容余素。
#!/bin/bash
crontab –e
30 3 * * * /root/bin/backup.sh
這樣,就可以每天凌晨3:30自動備份到Dropbox了饼疙。