上次写过一篇《用BackWPup自动备份WordPress到Dropbox》,
但BackWPup是Wordpress的插件,非Wordpress用户就没法用。
而且Wordpress本来体积就很大了,使用太多的插件会影响其速度,能少用一个就少用一个。
如果你是VPS用户或者对主机有Root权限,可以使用脚本来实现BackWPup插件备份到Dropbox的功能。
一、登录Dropbox并创建一个APP
如果你还没有注册Dropbox,可以通过这个地址注册:http://db.tt/h2uDxr7V
登录之后,通过这个地址:https://www.dropbox.com/developers/apps
点击Create an app创建一个APP,填写相关信息之后,选择Full Dropbox之后点击Create创建。
二、下载Dropbox-Uploader
下载地址:https://github.com/andreafabrizi/Dropbox-Uploader
下载之后上传至VPS的root目录。
三、赋予执行权限并绑定Dropbox APP
用SSH执行,建议使用Xshell。
赋予Dropbox-Uploader.sh执行权限
chmod +x dropbox_uploader.sh
然后绑定APP
./dropbox_uploader.sh info
按提示分别输入App key和App secret,然后输入 Y 确认;
之后会出现如下画面:
复制图中的链接在浏览器中打开(可能需要翻墙)并点击Allow绑定APP,然后回到Xshell按Enter。
之后可以执行下面的命令测试上传,提示Done就是绑定成功了。
./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old
四、添加自动备份脚本
在Xshell中执行:
vi backup.sh
按 i 进入编辑模式
适当修改以下内容后,复制粘贴进去
#!/bin/bash DROPBOX_DIR="/backup/$(date +%Y-%m-%d)" #Dropbox上的备份目录 MYSQL_USER="root" #数据库帐号 MYSQL_PASS="123456" #数据库密码 YM_DATA=/etc/nginx #nginx配置目录 BACK_DATA=/home/backup #本地备份文件存放目录,手动创建 DATA=/home/www #网站数据存放目录 #定义数据库的名字和旧数据库的名字 DataBakName=Data_$(date +"%Y%m%d").tar.gz WebBakName=Web_$(date +%Y%m%d).tar.gz YMName=YM_$(date +%Y%m%d).tar.gz OldData=Data_$(date -d -6day +"%Y%m%d").tar.gz OldWeb=Web_$(date -d -6day +"%Y%m%d").tar.gz OldYM=YM_$(date -d -6day +"%Y%m%d").tar.gz #定义Dropbox旧数据的名字(30天前) Old_DROPBOX_DIR=/backup/$(date -d -30day +%Y-%m-%d) #Dropbox上的备份目录 #删除本地6天前的数据 rm -rf $BACK_DATA/$OldData $BACK_DATA/$OldWeb $BACK_DATA/$OldYM cd $BACK_DATA #使用命令导出SQL数据库,并且按数据库分个压缩 for db in `mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do (mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz) done #压缩数据库文件合并为一个压缩文件 tar zcf $BACK_DATA/$DataBakName $BACK_DATA/*.sql.gz rm -rf $BACK_DATA/*.sql.gz #压缩网站数据 cd $DATA tar zcf $BACK_DATA/$WebBakName ./* #压缩域名配置数据 cd $YM_DATA tar zcf $BACK_DATA/$YMName ./* cd ~ #开始上传 ./dropbox_uploader.sh upload $BACK_DATA/$DataBakName $DROPBOX_DIR/$DataBakName ./dropbox_uploader.sh upload $BACK_DATA/$WebBakName $DROPBOX_DIR/$WebBakName ./dropbox_uploader.sh upload $BACK_DATA/$YMName $DROPBOX_DIR/$YMName #开始删除远程30天前的文件 ./dropbox_uploader.sh delete $Old_DROPBOX_DIR/ echo -e "Thank you! all down"
脚本来自hostloc论坛,其中我修改了一部分。
按ESC键退出编辑模式,
输入:wq
然后按Enter保存并退出。
五、赋予脚本权限
在Xshell执行
chmod +x backup.sh
六、设置定时任务
执行
crontab -e
在最后加入
00 03 * * * /root/backup.sh
表示每天凌晨三点执行备份脚本。
如果你的VPS是nano编辑器(最上有nano字样),加入之后按Ctrl+O或F3并按Enter保存,然后按Ctrl+X或F2退出;
另一种是vi编辑器,需要先按i键进入编辑模式,在末尾输入上面的命令之后,按ESC键,输入:wq ,再按Enter保存并退出即可。
更多Crontab使用方法请看:http://www.vpser.net/manage/crontab.html
七、最后重启Crontab
service cron restart
重启之后就设置完成了……
如果你不知道服务器当前时间,可以使用下面的命令;
查看当前时间:
date -R
修改当前时区:
cp /usr/share/zoneinfo/主时区/次时区 /etc/localtime
例如:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
即修改服务器时区为上海。
哇偶 都是技术流干的事情呢 呵呵
@兰州SEO 都只是略懂一二,呵呵。
这个很方便啊,我一直是这样备份。
@zwwooooo 是啊,特别适合小内存的VPS。
dropbox不是被墙了么?
@Moker 现在可以正常访问。
如果使用的是国外的服务器,有没有被墙都可以正常备份。。。
mark一下。。我都直接从一个VPS上备份到另外一个VPS上。。这个方法不错。嘿嘿嘿。。
@艳文 两个VPS可以用FTP自动备份脚本……
你好。安装步骤来搞。执行backup.sh的时候报错。
/root/backup.sh: line 24: syntax error near unexpected token `done’
/root/backup.sh: line 24: `done’
这是哪里的问题,帮高手我下吗?怎么解决,十分感谢
这个教程非常有帮助。
谢谢博主提供这么好的脚本。
设置的是凌晨3点运行,/etc/localtime 用的也是 Shanghai ,但为什么都是 北京时间 11点运行的呢?
@OpenBilly 貌似是OpenVZ的问题,修改后还是按母机的时间运行。
母机的时间只能联系主机商设置,自己推算一下时间再设定也行。
@竹箫 THX,没关系啦,只是运行时间而已,没多大关系。
介个~~~Dropbox APP不限制容量的吗?
@Yusky 有限制的,这个是通过API上传,每次好像只能上传不大于250M的文件。
如果你需要备份的数据大于250M,可以选择备份到FTP服务器。
@竹箫 博主你好, 我按照你的说明调好了。 但是。 dropbox网盘上木有看见备份的。。。 只有一个passwd.old测试文件
@9Down 你检查下backup.sh这个脚本文件是否存在。
存在的话执行一下,看看会不会备份。
哦也~~折腾到最后一步失败了。 不知啥原因。。
@9Down 这个脚本有问题 是无法折腾了
@six 问题何在?我一直用着,没发现有问题。
博主你好。这个咋看有没有备份成功呢? 如果VPS真挂了。 怎么拿出备份的数据呢?
@9Down 登录到Dropbox查看就行了。VPS挂了,可以到Dropbox直接下载数据到自己电脑,或者用另一个VPS使用wget下载。
@竹箫 mysqldump: Got error: 1044: Access denied for user ‘root’@’localhost’ to database ‘information_schema’ when using LOCK TABLES
tar: Removing leading `/’ from member names
tar: ./*: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
> Uploading /home/backup/Data_20130217.tar.gz to /backup/2013-02-17/Data_20130217.tar.gz…
######################################################################## 100.0%
> DONE
> Uploading /home/backup/Web_20130217.tar.gz to /backup/2013-02-17/Web_20130217.tar.gz…
######################################################################## 100.0%
> DONE
> Uploading /home/backup/YM_20130217.tar.gz to /backup/2013-02-17/YM_20130217.tar.gz…
######################################################################## 100.0%
> DONE
> Deleting “/backup/2013-01-18/”… FAILED
Thank you! all down
提示这个
@9Down 这样不就可以正常备份?
@竹箫 @竹箫 呃。 第一行和最后一行不是提示错误吗?
@9Down @9Down 前面的提示无碍,最后倒数第二行提示删除失败是因为你在2013-01-18这一天没备份,没文件可删除,所以删除失败。
@竹箫 @竹箫 纠结。dropbox的文件不会自动删除。 求指导。 能自动上传上去
@9Down @9Down 手动运行
./dropbox_uploader.sh delete 要删除的目录名
能不能删除?@竹箫 @竹箫 运行这脚本了。> Deleting “2013-04-26″… FAILED
提示这个。 失败了啊
@9Down @9Down 你改了脚本么?没有的话目录名应该是
/backup/2013-04-26
@竹箫 @竹箫 呃。没改啊。 不过VPS上的目录名是upbackup。
[root@UTVPS wwwroot]# ./dropbox_uploader.sh delete /backup/2013-05-05
-bash: ./dropbox_uploader.sh: No such file or directory
[root@UTVPS wwwroot]# ./dropbox_uploader.sh delete /upbackup/2013-05-05
-bash: ./dropbox_uploader.sh: No such file or directory
@9Down @9Down 这个目录应该是Dropbox备份目录。与VPS那个无关。出现这提示,你是不是把dropbox_uploader.sh这个脚本文件删了?
@竹箫 @竹箫 呃,dropbox_uploader.sh 也没删除啊。backup/2013-05-05 这文件夹也是有的~~
@9Down @9Down 呃。。那你是做了什么之后才会出现
No such file or directory
这提示的?没动它的话,就算失败也应该是出现你上面那个Failed的提示。@竹箫 @竹箫 什么都没改啊。
./dropbox_uploader.sh delete 2013-05-05
这样就是提示Failed的
@9Down @9Down你之前能自动删除的?还是一直不能自动删除?尝试下把原来的脚本删除,再重新添加脚本。注意赋予执行权限和修改脚本时的编辑器编码。