快捷搜索:   nginx

利用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="[email protected]" //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网站进行恢复)

顶(6)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论