linux dropbox自动同步,Linux免dropbox客户端备份脚本

3e50a3bd38f5bf9356e6bc2cc047b8da.png

016e3f840721cb6f236f16c0bde8e308.png

脚本来源:http://www.andreafabrizi.it/?dropbox_uploader

脚本的原理:利用curl(字符串浏览器)模拟网页上传。好处是不需要在vps装dropbox客户端,从而降低vps内存消耗,缺点:不能像安装dropbox客户端那样同步备份。

操作步骤:

wget http://linux-bash.googlecode.com/files/uploader.sh

下载脚本

chmod 777 uploader.sh

修改权限

bash uploader.sh dropbox登录帐号 登录密码 本地文件路径 上传文件路径

执行脚本

目前只能上传单个文件,还不能上传整个文件夹。

090a81f421e3358c3250ffad81487ef8.png

通过上面脚本,我们很容易就可以做出备份文件数据和数据库的脚本备份到dropbox中,然后通过crontab定时每天备份。

#!/bin/bash

DROPBOX_USER="Your Dropbox username" #dropbox用户名

DROPBOX_PASS="Your Dropbox password" #dropbox密码

DROPBOX_DIR="Directory in your dropbox account to store the backups, e.g. /backups" #dropbox上存放备份文件目录

BACKUP_SRC="/home /var/www /var/git /etc /root" #vps上需要备份的目录 多个目录以空格隔开

BACKUP_DST="/tmp" #本地临时存放文件或者数据库的目录

MYSQL_SERVER="127.0.0.1" #mysql数据库地址

MYSQL_USER="root" #mysql数据库用户名

MYSQL_PASS="Your MySQL password" #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/.*

]*>\s*

# 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"

要修改的部分

DROPBOX_USER="Your Dropbox username" #dropbox用户名

DROPBOX_PASS="Your Dropbox password" #dropbox密码

DROPBOX_DIR="Directory in your dropbox account to store the backups, e.g. /backups"

#dropbox上存放备份文件目录

BACKUP_SRC="/home /var/www /var/git /etc /root" #vps上需要备份的目录 多个目录以空格隔开

BACKUP_DST="/tmp" #本地临时存放文件或者数据库的目录

MYSQL_SERVER="127.0.0.1" #mysql数据库地址

MYSQL_USER="root" #mysql数据库用户名

MYSQL_PASS="Your MySQL password" #mysql数据库密码

放到计划任务中定时备份

$ crontab -e

0 0 1 * * /bin/bash /root/DropboxBackup.sh

相关日志:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值