Dropbox

Dropbox Uploader的自動備份腳本

Dropbox是很熱門的雲端硬碟服務商,利用了一下github上的一支Dropbox Uploader程式,套用以前的備份shell script,簡單就能做到排程上傳備份檔案到Dropbox 🤖🤓🤖

筆記一下操作Dropbox Uploader的紀錄 🤓

1. 登入Dropbox的開發控制台,然後點擊Create app

2. 接下來進入DBX Platform的設定頁面,權限設定在應用程式資料夾才不會影響到其他的資料夾或檔案,另外在Name your app的框框中不能輸入有關dropbox的字樣,要特別注意 🤓

3. 點擊Generated access token此處產生access token,然後把它筆記下來

4. 直接建立Dropbox Uploader需要的access token設定值,將剛剛在Dropbox的開發控制台產生的access token替換到下方OOXX的地方

rm -f ~/.dropbox_uploader
cat <<"EOF" > ~/.dropbox_uploader
OAUTH_ACCESS_TOKEN=OOXX
EOF

5. 安裝Dropbox Uploader (日後升級也是同樣指令)

rm -f /opt/dropbox_uploader.sh
cd /opt
curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
chmod +x dropbox_uploader.sh

常用指令

# 檢查設定值
/opt/dropbox_uploader.sh info
# 檢查Dropbox空間大小
/opt/dropbox_uploader.sh space
# 上傳OOXX.tar.gz檔案到應用程式資料夾的根目錄
/opt/dropbox_uploader.sh upload OOXX.tar.gz /
# 上傳資料夾/opt/Doc到應用程式資料夾的根目錄(/opt/Doc裡面的子目錄也一樣會上傳)
/opt/dropbox_uploader.sh upload /opt/Doc /
# 下載應用程式的根目錄底下的的OOXX.tar.gz到/opt資料夾
/opt/dropbox_uploader.sh download OOXX.tar.gz /opt
# 下載Doc資料夾到/opt資料夾(Doc裡面的子目錄也一樣會下載)
/opt/dropbox_uploader.sh download Doc /opt
# 下載Doc資料夾底下的OOXX.tar.gz到/opt資料夾
/opt/dropbox_uploader.sh download Doc/OOXX.tar.gz /opt
# 新增資料夾Doc
/opt/dropbox_uploader.sh mkdir Doc
# 新增子資料夾Manuals
/opt/dropbox_uploader.sh mkdir Doc/Manuals
# 刪除檔案OOXX.tar.gz
/opt/dropbox_uploader.sh delete OOXX.tar.gz
# 刪除Doc資料夾底下的OOXX.tar.gz
/opt/dropbox_uploader.sh delete Doc/OOXX.tar.gz
# 刪除Doc資料夾
/opt/dropbox_uploader.sh delete Doc
# 刪除Doc資料夾底下的Manuals資料夾
/opt/dropbox_uploader.sh delete Doc/Manuals
# 列表
/opt/dropbox_uploader.sh list
# 列表Doc資料夾
/opt/dropbox_uploader.sh list /Doc
# 列表Doc/Manuals資料夾
/opt/dropbox_uploader.sh list /Doc/Manuals

666. 建立備份腳本

touch /var/log/backup.log
rm -f /root/MyUploader520be.sh
cat <<"EOF" > /root/MyUploader520be.sh
#!/bin/bash
############### 你要修改的地方從這裡開始 ###############
DROPBOX_UPLOADER=/opt/dropbox_uploader.sh 	# Dropbox Uploader該程式位置
BACKUP_DIR=/opt/backup 				# 備份檔位置
WEB_DATA=/home/admin/web/ 			# 要備份的網站位置,可以空格做區隔備份多個位置
MYSQL_USER=root 				# MySQL使用者名稱
MYSQL_PASS=OOXX 			# MySQL密碼
MYSQL_PATH=mysql 				# MySQL程式路徑
MYSQLDUMP=mysqldump 				# MySQLDUMP程式路徑
MYSQLCHECK=mysqlcheck 				# MySQLCHECK程式路徑
############### 你要修改的地方從這裡結束 ###############
# 定義資料庫的名字和舊資料庫的名字
DBName=$HOSTNAME-MySQL_$(date +"%Y%m%d").tar.gz
OldDB=$HOSTNAME-MySQL_$(date -d -7day +"%Y%m%d").tar.gz
# 定義網站資料的名字和舊網站資料的名字
WebName=$HOSTNAME-Web_$(date +%Y%m%d).tar.gz
OldWeb=$HOSTNAME-Web_$(date -d -7day +"%Y%m%d").tar.gz
# 刪除本地7天前的資料庫
mkdir -p $BACKUP_DIR
cd $BACKUP_DIR
rm -f $BACKUP_DIR/$HOSTNAME-MySQL_$(date -d -7day +"%Y%m%d").tar.gz
# 刪除本地1天前的網站資料
rm -f $BACKUP_DIR/$HOSTNAME-Web_$(date -d -1day +"%Y%m%d").tar.gz
# 最佳化並自動修復資料庫
$MYSQLCHECK -u $MYSQL_USER -p$MYSQL_PASS -oA --auto-repair > /dev/null 2>&1
# 輸出資料庫,如果使用root帳號會輸出成一個資料庫一個SQL檔
for db in `$MYSQL_PATH -u $MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
($MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS --single-transaction --skip-lock-tables ${db} > ${db}.sql)
done
# 壓縮所有資料庫為一個壓縮檔並刪除所有的SQL檔
rm -f information_schema.sql mysql.sql performance_schema.sql
tar zcfP $BACKUP_DIR/$DBName $BACKUP_DIR/*.sql
rm -f $BACKUP_DIR/*.sql
# 壓縮網站資料
tar zcfP $BACKUP_DIR/$WebName $WEB_DATA --exclude=wp-content/akeebabackup --exclude=wp-content/cache
#上傳到Dropbox空間並刪除7天前的資料
$DROPBOX_UPLOADER -f /root/.dropbox_uploader upload "$DBName" /
$DROPBOX_UPLOADER -f /root/.dropbox_uploader upload "$WebName" /
$DROPBOX_UPLOADER -f /root/.dropbox_uploader delete "$OldDB" /
$DROPBOX_UPLOADER -f /root/.dropbox_uploader delete "$OldWeb" /
# ring a bell
printf '\007'
EOF
chmod +x /root/MyUploader520be.sh

然後接著就執行一次吧,沒問題再套用到crontab去排程

# 定時每天6點自動執行備份

crontab -l | { cat; echo "0 6 * * * /root/MyUploader520be.sh 2>&1 >> /var/log/backup.log"; } | crontab -
crontab -l
範例檔案下載

關於 窮苦人家的小孩

In every democracy, the people get the government they deserve. ~Alexis de Tocqueville
上一篇:
下一篇:

您可能會喜歡

桃乃木かな 桃乃木香奈 Kana Momonogi

CloudCone全自動DD安裝Windows

前陣子VPS優惠 – Clou …

發佈留言