利用Shell脚本实现自动备份VPS数据到Dropbox
2012年4月24日
自动备份VPS数据到Dropbox
相关截图如下
执行脚本后的显示:
在Dropbox中成功备份:
以下便是脚本的相关内容:
1 2 3 4 |
vim DropboxBackup.sh chmod +x DropboxBackup.sh crontab -e //设置为每个月执行一次备份,具体时间可以根据需要进行修改 00 02 1 * * /bin/bash /root/DropboxBackup.sh |
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
#!/bin/bash DROPBOX_PASS="yourpassword" //Dropbox的密码 DROPBOX_DIR="/backups" //Dropbox中的文件夹名称 BACKUP_SRC="/home/wwwroot /usr/local/nginx/conf/vhost" //需要备份的文件夹路径,可以同时指定多个 BACKUP_DST="/home/wwwroot/backup" //用来存放备份的文件夹路径 MYSQL_SERVER="127.0.0.1" //连接本地MySQL MYSQL_USER="root" //本地MySQL的用户 MYSQL_PASS="yourpassword" //本地MySQL的密码 # Stop editing here. NOW=$(date +"%Y.%m.%d") DESTFILE="$BACKUP_DST/$NOW.tgz" # Upload a file to Dropbox. # $1 = Source file # $2 = Destination file. function dropboxUpload { # Code based on DropBox Uploader 0.9.4 from http://www.andreafabrizi.it/?dropbox_uploader 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" UPLOAD_FILE=$1 DEST_FOLDER=$2 # 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 '$UPLOAD_FILE' to 'DROPBOX$DEST_FOLDER/'..." curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE -F "plain=yes" -F "dest=$DEST_FOLDER" -F "t=$TOKEN" -F "file=@$UPLOAD_FILE" "$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 } # Backup files. echo "Dumping databases..." mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql" echo "Packing files..." tar czf "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql" dropboxUpload "$DESTFILE" "$DROPBOX_DIR" echo "Cleaning the backups..." rm -f "$NOW-Databases.sql" find $BACKUP_DST -mtime +31 -delete //这里的时间可以根据需要进行修改 |
参考资料:http://davehope.co.uk/Blog/backup-your-linux-vps-to-dropbox/
声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: 利用Shell脚本实现自动备份VPS数据到Dropbox