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 |
