VPS自动备份到dropbox的脚本
VPS自动备份到dropbox的脚本
Sandy利用dropbox提供的免费5G空间,备份数据库
执行脚本后的显示:
在Dropbox中成功备份:
[cce]
#!/bin/bash
DROPBOX_USER="guosuiyu@gmail.com" //Dropbox的账号
DROPBOX_PASS="12345678" //Dropbox的密码
DROPBOX_DIR="/backups" //Dropbox中的文件夹名称
BACKUP_SRC="/blog/rainbow /home /data" //需要备份的文件夹路径,可以同时指定多个
BACKUP_DST="/home/rainbow/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 //这里的时间可以根据需要进行修改
[/cce]
小提醒:别忘记给脚本执行权限了哦
chmod +x DropboxBackup.sh
crontab -e //设置为每个月执行一次备份,具体时间可以根据需要进行修改
00 02 1 * * /bin/bash /home/rainbow/DropboxBackup.sh
下载用于上传文件的dropbox_uploader.sh脚本,由http://www.andreafabrizi.it/?dropbox_uploader提供并维护。
点击下载:dropbox_uploader
下载完成后解压并赋予可执行权限
unzip dropbox_uploader.zip
chmod +x dropbox_uploader.sh
mv dropbox_uploader.sh /home/rainbow/
初始化脚本,并按照脚本中的提示到对应的Dropbox的网页中创建API,在脚本的交互界面中输入生成的Key
./dropbox_uploader.sh
初始化完成以后,便可以立即执行一次DropboxBackup.sh脚本进行备份了
/home/rainbow/DropboxBackup.sh


