脚本自动备份WordPress到Dropbox

数据是无价的,所以博客的备份一定要稳妥,原先丢失过一次数据,不算太严重也足以让我印象深刻了。WordPress的备份无非三种方式:

  • 插件备份
  • 脚本备份
  • 第三方服务

插件备份WordPress无非是最简单的方式,我一般会选择备份到Email或Dropbox。备份到Email时,会添加规则标注已读并移动到Backup文件夹,这样也是很好的备份手段。奈何本身不喜欢插件备份的形式,Email的附件一般限制大小25MB,所以就选择了使用脚本备份到Dropbox的方式。这种方法仅限搭建在VPS上的博客,还有OpenShift上也可以这种方法。

使用脚本备份的方法也很简单,分为三个步骤:

  1. 设定Dropbox脚本
  2. 编辑自动备份脚本
  3. 添加定时运行

一、设定Dropbox脚本

首先需要一个Dropbox的账号,如果没有账号可以在这里注册。登录Dropbox,打开https://www.dropbox.com/developers/apps,点击Creat app创建新的app,依次点击Dropbox API、Full Dropbox,app name随便取名,创建成功后进入刚刚创建的app管理页面,能看到App key、App secret后这个地方就完成了。dropbox-app

接着使用SSH连接自己的VPS主机,进行下列操作:

mkdir backup #创建目录
cd backup #进入目录
wget https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh –no-check-certificate #下载dropbox备份脚本
chmod +x dropbox_uploader.sh #加执行权限
sh dropbox_uploader.sh info #运行脚本

首次运行需要进入之前创建的app的设置中生成token,之后输入y进行确认,会在当前目录下生成.dropbox_uploader文件记录token值。也就是说,如果你想要其他用户使用这个脚本,需要复制这个文件到其他用户目录下,或者以其他用户身份运行,重新生成一个token进行配置。

二、编辑自动备份脚本

需要写一个shell脚本,使用顺手的编辑器编辑,我是使用vim,在其中粘贴进去以下内容:

#!/bin/bash
SCRIPT_DIR=”/home/usname/backup” #之前下载的脚本的位置
DROPBOX_DIR=”/backup” #保存到Dropbox中的/backup文件夹
BACKUP_SRC=”/var/www/wordpress/wp-content/uploads” #这个是你想要备份的本地VPS上的文件,不同的目录用空格分开
BACKUP_DST=”/tmp”
MYSQL_SERVER=”localhost”
MYSQL_USER=”root” #这个是你mysql的用户名名称
MYSQL_PASS=”yearliny” #这个是你mysql用户的密码
# 下面的不用改
NOW=$(date +”%Y.%m.%d”)
OLD_DROPBOX_DIR=/backup/$(date -d -30day +%Y.%m.%d)
DESTFILE=”$BACKUP_DST/$NOW.tar.gz”
# 备份mysql数据库并和其它备份文件一起压缩成一个文件
mysqldump -u$MYSQL_USER -h$MYSQL_SERVER -p$MYSQL_PASS --all-databases “$NOW-Databases.sql”
tar cfzP “$DESTFILE” $BACKUP_SRC “$NOW-Databases.sql”
# 用脚本上传到dropbox
$SCRIPT_DIR/dropbox_uploader.sh upload “$DESTFILE” “$DROPBOX_DIR/$NOW.tar.gz”
# 删除本地的临时文件
rm -f “$NOW-Databases.sql” “$DESTFILE”
$SCRIPT_DIR/dropbox_uploader.sh delete “$OLD_DROPBOX_DIR.tar.gz”
echo $NOW “All done!”

保存,使用chmod +x xxx.sh添加执行权限,就能使用sh xxx.sh命令执行了。这个脚本能够自动保存WordPress的文件夹和数据库打包上传到Dropbox的bakcup文件夹下,并且自动删除30天前的旧备份文件,避免占用空间。

三、添加定时运行

由于脚本需要root权限才能运行,所以需要以root身份定时运行脚本。执行命令sudo crontab -e,添加下列内容:

0 0 * * * /home/user/backup/backup.sh >>/var/log/sitebak.log

后面的路径修改为之前自己编辑的自动备份脚本的绝对目录位置,保存退出,即可每天零点备份一次博客,并输出每次运行的信息到/var/log/sitebak.log,可谓十分放心~

注意:test.sh > log和test.sh >>log两种方法所保存的日志是存在差异的,第一种方法只会保存最后一次的运行结果,即最后一次的运行信息和覆盖掉原先的日志。而第二种方法却会记录每次的执行信息到文件这。

“脚本自动备份WordPress到Dropbox”的4个回复

  1. API方式适合文件数不多的项目,多的话会比较慢,而且失败率高。
    而且API方式对于一些文件类型,并不能完善判断是否更改,很多直接重新上传了。

    我现在用安装dropbox程序的方式来同步。比较节省流量和时间

    1. 备份的文件是压缩打包好的数据库和网站文件,所以上传的文件数始终是1,至于容易失败,我却没有体会。目前博客内容不多,只使用了过滤垃圾评论插件,所以整个WordPress和数据库也就17M,每天备份一份,留有30份存档,这种备份方式目前来说还是很妥当的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注