利用Shell脚本实现自动备份服务器/VPS数据到Dropbox网盘
利用Shell脚本实现自动备份服务器/VPS数据到免费的Dropbox网盘 数据无价,谁也无法保证服务器硬盘或者VPS的宿主机硬盘不会出问题。要自己做好VPS的数据备份,包括网站数据和数据库。
对于服务器在美国等海外城市的,手动下载备份文件速度会非常慢,于是我想到了Dropbox,它是目前美国名气最大的免费网络硬盘站点,在经过了一系列的搜索和失败的尝试之后,我终于发现了一个Shell脚本,无需安装任何Dropbox客户端程序,就可以实现自动备份VPS数据到Dropbox的功能。
注意如果,你是国内服务器可能无法使用dropbox,因为这个网站被墙了
相关截图如下
执行脚本后的显示:
在Dropbox中成功备份:
以下便是脚本的相关内容:
# vim DropboxBackup.sh
然后这里插入下面列出来的DropboxBackup.sh代码。完成后WQ保存,再继续执行下面程序
# chmod +x DropboxBackup.sh
# crontab -e //设置为每个月执行一次备份,具体时间可以根据需要进行修改
00 02 1 * * /bin/bash /home/rainbow/DropboxBackup.sh
以下是DropboxBackup.sh代码,在刚才第一步的时候输入。
#!/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 '
' | sed 's/.*<form action="https://dl-web.dropbox.com/upload"[^>]*>s*<input type="hidden" name="t" value="([a-z 0-9]*)".*//')
# 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 //这里的时间可以根据需要进行修改
这里把sh脚本文件传上来供大家参考DropboxBackup.rar
Shell脚本应用了API,另外还有种传统的备份方法,就是给你的LINUX服务器安装dropbox的专用备份软件
方法如下
在开头先要说明的是,dropbox有可能在国内打不开,所以对国内vps无效。
wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86
tar -zxof dropbox.tar.gz
~/.dropbox-dist/dropboxd &
运行后,会出现一串URL地址,将这串URL地址复制粘贴到你的浏览器中运行一下,以使VPS与你的dropbox帐号绑定(需要使用代-理或者V-P-N)。
cd ~/Dropbox
ln -s /home/wwwroot wwwroot_backup (该命令是备份整个wwwroot文件夹,dropbox上对应的文件夹名称为wwwroot_backup)
支持同时同步多个文件夹
dropbox运行所需要的内存大约为140M,所以对于内存较小的vps,长期运行有点不合适。可以通过建计划任务来自动启动和关闭dropbox,设置在后半夜同步一下即可。
在~/.dropbox/中建立脚本:
#!/bin/sh
start() {
echo starting dropbox
/root/.dropbox-dist/dropboxd &
}
stop() {
echo stoping dropbox
pkill dropbox
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
esac
修改脚本权限:
chmod 755 ~/.dropbox/dropbox.sh
建立计划任务:
crontab –e
添加两条内容:
0 1 * * * sh /root/.dropbox/dropbox.sh restart
0 6 * * * sh /root/.dropbox/dropbox.sh stop
:wq保存,这样dropbox就会自动在每天1点运行,6点关闭。
删除dropbox的方法:
# sh /root/.dropbox/dropbox.sh stop
# su - root
# cd
# rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py
Dropbox注册地址:www.dropbox.com (此处依然需要Go out of wall)
特别提醒
由于这个备份在dropbox启动的时候是实时的,所以要小心在dropbox网站上误操作,可能导致主服的数据丢失!(俺犯过这个失误。不过即使误删了,可以登录dropbox网站进行恢复)
- 最新评论