zoukankan      html  css  js  c++  java
  • 免安装客户端,利用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
  • 相关阅读:
    Java 泛型 泛型的约束与局限性
    Java 泛型 泛型方法
    Java 泛型 泛型数组
    Java 泛型 协变性、逆变性
    Java 泛型 协变式覆盖和泛型重载
    Java 泛型 泛型代码和虚拟机
    Insertion Sort List
    Remove Duplicates from Sorted List II
    String to Integer (atoi)
    SpringMvc源码入门
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327342.html
Copyright © 2011-2022 走看看