Created
May 15, 2012 03:39
-
-
Save ilstar/2698898 to your computer and use it in GitHub Desktop.
利用Dropbox自动备份VPS的数据,无需安装dropbox
This file contains hidden or 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="Your Dropbox username" | |
DROPBOX_PASS="Your Dropbox password" | |
DROPBOX_DIR="Directory in your dropbox account to store the backups, e.g. /backups" | |
BACKUP_SRC="/home /var/www /var/git /etc /root" | |
BACKUP_DST="/tmp" | |
MYSQL_SERVER="127.0.0.1" | |
MYSQL_USER="root" | |
MYSQL_PASS="Your MySQL password" | |
# | |
# 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. | |
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql" | |
tar cfz "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql" | |
dropboxUpload "$DESTFILE" "$DROPBOX_DIR" | |
rm -f "$NOW-Databases.sql" "$DESTFILE" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment