免安装客户端,利用DropBox备份VPS上的网站数据

http://www.vmvps.com/using-dropbox-script-backup-your-website-data-on-vps-with-installing-dropbox-client.html   正 如大家所知,DropBox是国外十分流行的网盘,但是由于一些原因,我们常常不能正常使用。但好在使用https协议我们依然可以正常的访问。虽然上传 和下载有些问题,但是用DropBox这个免费空间来备份网站数据无疑是灰常给力的事情。当然,如果你是Windows主机,并且有足够的内存来运行诸如 Dropbox的客户端,自然不必说,云网盘的同步功能可以说是万无一失。可大内存的WinVPS不是我等能消费起的,更何况本文将介绍另一种更加给力的 方法,仅利用我们熟悉的脚本,不需安装客户端,就可轻松使用DropBox备份网站数据,再结合Crontab,定时备份也就顺理成章的实现了! 虽然微魔的教程素来以“白”为特色,但还是稍微讲一下原理吧。本文中的脚本主要还是利用了DropBox本身的API,实现简单的登录并上传功能,虽然界面并不是可视化的,但是既然能工作,我们何乐而不为呢? 开始之前,先创建本地备份文件夹,以供后文使用,命令为mkdir -p /home/backup 1.在适当位置建立如下脚本(下载该脚本),命名为dropbox.sh(本文脚本位置放置在/root下) 脚本将MySQL中指定数据库导出为.sql文件,最后与网站文件一起打包成最终的tgz文件。 #!/bin/bash DROPBOX_USER="DropBox账号" DROPBOX_PASS="DropBox密码" DROPBOX_DIR="DropBox目录,如/vmvps" BACKUP_SRC="要备份的目录,如/home/wwwroot/vmvps.com" BACKUP_DST="本地备份目录,如/home/backup" MYSQL_USER="root" MYSQL_PASS="MySQL密码" MYSQL_SERVER="127.0.0.1" MySQL_DATABASE="要备份的目标数据库,如vmvps" NOW=$(date +"%Y.%m.%d") DESTFILE="$BACKUP_DST/$NOW.tgz" # Backup files. echo "Packing databases..." mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS $MySQL_DATABASE > "$NOW-Databases.sql" echo "Packing files..." tar czf "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql" # Upload a file to Dropbox. LOGIN_URL="https://www.dropbox.com/login" HOME_URL="https://www.dropbox.com/home" UPLOAD_URL="https://dl-web.dropbox.com/upload" COOKIE_FILE="/tmp/du_cookie_$RANDOM" RESPONSE_FILE="/tmp/du_resp_$RANDOM" # Login echo -ne " > Logging in..." curl -s -i -c $COOKIE_FILE -o $RESPONSE_FILE --data "login_email=$DROPBOX_USER&login_password=$DROPBOX_PASS&t=$TOKEN" "$LOGIN_URL" grep "location: /home" $RESPONSE_FILE > /dev/null if [ $? -ne 0 ]; then echo -e " Failed!" rm -f "$COOKIE_FILE" "$RESPONSE_FILE" exit 1 else echo -e " OK" fi # Load home page echo -ne " > Loading Home..." curl -s -i -b "$COOKIE_FILE" -o "$RESPONSE_FILE" "$HOME_URL" if [ $? -ne 0 ]; then echo -e " Failed!" rm -f "$COOKIE_FILE" "$RESPONSE_FILE" exit 1 else echo -e " OK" fi # Get token TOKEN=$(cat "$RESPONSE_FILE" | tr -d '\n' | sed 's/.*<form action="https:\/\/dl-web.dropbox.com\/upload"[^>]*>\s*<input type="hidden" name="t" value="\([a-z 0-9]*\)".*/\1/') # Upload file echo -ne " > Uploading '$DESTFILE' to 'DROPBOX$DROPBOX_DIR/'..." curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE -F "plain=yes" -F "dest=$DROPBOX_DIR" -F "t=$TOKEN" -F "file=@$DESTFILE" "$UPLOAD_URL" grep "HTTP/1.1 302 FOUND" "$RESPONSE_FILE" > /dev/null if [ $? -ne 0 ]; then echo -e " Failed!" rm -f "$COOKIE_FILE" "$RESPONSE_FILE" exit 1 else echo -e " OK" rm -f "$COOKIE_FILE" "$RESPONSE_FILE" fi echo "Cleaning the backups..." rm -f "$NOW-Databases.sql" find $BACKUP_DST -mtime +3 -delete 本脚本仅备份指定的一个数据库,即变量$MySQL_DATABASE,如需备份全部数据库,可将脚本中的$MySQL_DATABASE,替换成–all-databases 2.赋予脚本运行权限chmod +x dropbox.sh3.测试脚本运行情况/bin/bash dropbox.sh4.如运行无误,设置定时任务crontab -e 按照自己的需要输入,如需要每日备份可参考 00 00 * * * /bin/bash /root/dropbox.sh
原文地址:https://www.cnblogs.com/adodo1/p/4327342.html