创建 Dropbox app
https://www.dropbox.com/developers/apps
Dropbox 脚本
准备输入 token
wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
chmod +x dropbox_uploader.sh
./dropbox_uploader.sh info
获取 token
测试上传
# 上传本地文件到网盘(file.txt -> file_backup.txt)
./dropbox_uploader.sh upload /root/file.txt /file_backup.txt
# 输出
> Uploading "/root/file.txt" to "/file_backup.txt"... DONE
备份脚本 backup.sh(Unix 格式)
#!/bin/bash
# 这个改成你存放刚刚下载下来的 dropbox_uploader.sh 的文件夹位置
SCRIPT_DIR="/root/jobs/dropbox"
# 这个改成你的备份文件想要放在 Dropbox 下面的文件夹名称,如果不存在,脚本会自动创建
DROPBOX_DIR=""
# 这个是你想要备份的本地 VPS 上的文件,不同的目录用空格分开
BACKUP_SRC="/home/wwwroot /usr/local/nginx/conf"
# 这个是你暂时存放备份压缩文件的地方,一般用/tmp 即可
BACKUP_DST="/tmp"
# 这个是你 mysql 服务器的地址,一般填这个本地地址即可
MYSQL_SERVER="localhost"
# 这个是你 mysql 的用户名名称,比如 root 或 admin 之类的
MYSQL_USER="root"
# 这个是你 mysql 用户的密码
MYSQL_PASS="root"
# 下面的一般不用改了
NOW=$(date +"%Y.%m.%d")
OLD=$(date -d -15day +"%Y.%m.%d")
DESTFILE="$BACKUP_DST/$NOW.tar.gz"
# 备份 mysql 数据库并和其它备份文件一起压缩成一个文件
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$BACKUP_DST/$NOW-Databases.sql"
echo "数据库备份完成,打包网站数据中..."
tar cfzP "$DESTFILE" $BACKUP_SRC "$BACKUP_DST/$NOW-Databases.sql"
echo "所有数据打包完成,准备上传..."
# 用脚本上传到 dropbox
$SCRIPT_DIR/dropbox_uploader.sh upload "$DESTFILE" "$DROPBOX_DIR/VPS1-$NOW.tar.gz"
if [ $? -eq 0 ];then
echo "上传完成"
else
echo "上传失败,重新尝试"
fi
# 删除本地的临时文件
rm -f "$BACKUP_DST/$NOW-Databases.sql" "$DESTFILE"
# 删除 15 天前的数据
$SCRIPT_DIR/dropbox_uploader.sh delete "$DROPBOX_DIR/VPS1-$OLD.tar.gz"
备份&定时
chmod +x backup.sh
./backup.sh
# 定时
crontab -e
* * 8 * * cd ~ ./backup.sh > /dev/null 2>&1 &
感谢
更新 2018-04-12