Last active
December 17, 2015 12:39
-
-
Save koy1619/5611107 to your computer and use it in GitHub Desktop.
参考http://davehope.co.uk/Blog/backup-your-linux-vps-to-dropbox/
备份数据到Dropbox,可能因为中国大陆网络环境受影响
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
DROPBOX_USER="xxx@xxx.com" //Dropbox的账号 | |
DROPBOX_PASS="12345678" //Dropbox的密码 | |
DROPBOX_DIR="/backups" //Dropbox中的文件夹名称 | |
BACKUP_SRC="/home/wwwroot /data" //需要备份的文件夹路径,可以同时指定多个中间用空格隔开 | |
BACKUP_DST="/home/backup" //用来存放备份的文件夹路径 | |
MYSQL_SERVER="127.0.0.1" //连接本地MySQL | |
MYSQL_USER="root" //本地MySQL的用户 | |
MYSQL_PASS="12345678" //本地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.6 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment