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的地方
1 2 3 4 |
rm -f ~/.dropbox_uploader cat <<"EOF" > ~/.dropbox_uploader OAUTH_ACCESS_TOKEN=OOXX EOF |
5. 安裝Dropbox Uploader (日後升級也是同樣指令)
1 2 3 4 |
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. 建立備份腳本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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點自動執行備份
1 2 |
crontab -l | { cat; echo "0 6 * * * /root/MyUploader520be.sh 2>&1 >> /var/log/backup.log"; } | crontab - crontab -l |