暑假的时候太忙了,32MB.CN 的 VPS 给忘续费了,数据全丢了,唉,之前一直说弄个计划任务定时备份到 Dropbox 的,直到前一段时间才弄上。 关键是数据无价啊,(虽然32MB.CN上的数据几乎没有价值),常备份是个好习惯,我选择备份到 Dropbox 是因为 Dropbox 是个同步盘,我的台式机和笔记本都装有 Dropbox,只要开机联网就会自动链接 Dropbox 同步数据,这样网站数据就不容易丢失了。

备份成功

成功备份32MB.CN到Dropbox成功备份32MB.CN到Dropbox

相关脚本

nano backup.sh

放到哪里无所谓,记得赋予执行权限就可以了chmod +x backup.sh

#!/bin/bash
# Settings
DROPBOX_DIR="/Backups" #Dropbox中的文件夹名称
BACKUP_SRC="/home/wwwroot/website /home/wwwroot/database" #需要备份的文件夹路径,可以同时指定多个,32MB.CN用了Sqlite数据库,Sqlite以文件形式存放,故也要备份
BACKUP_DST="/miniVPS" #用来存放备份的文件夹路径
MYSQL_SERVER="127.0.0.1" #连接本地MySQL
MYSQL_USER="root" #本地MySQL的用户
MYSQL_PASS="123456" #本地MySQL的密码

# Stop editing here
NOW=$(date +"%Y.%m.%d")
DESTFILE="$BACKUP_DST/$NOW.tgz"
LAST=$(date -d "2 months ago" +"%Y.%m.%d") #这里的时间可以根据需要进行修改,如"3 months ago"

# Backup files
ps -e | grep -c mysql
if [ $? -eq 0 ]; then
  echo "Dumping databases..."
  /web/mysql/bin/mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$BACKUP_DST/$NOW-Databases.sql" #这里的命令路径可以根据需要进行修改
else
  echo "ERROR. Now exiting..."
  exit 1
fi

if [ $? -eq 0 ]; then
  echo "Packing files..."
  tar -czf "$DESTFILE" $BACKUP_SRC "$BACKUP_DST/$NOW-Databases.sql"
else
  echo "ERROR. Now exiting..."
  exit 1
fi

if [ $? -eq 0 ]; then
  /home/backup/dropbox_uploader.sh upload "$DESTFILE" "$DROPBOX_DIR/$NOW.tgz" #这里的脚本路径可以根据需要进行修改
else
  echo "ERROR. Now exiting..."
  exit 1
fi

# Delete old files
if [ $? -eq 0 ]; then
  /home/backup/dropbox_uploader.sh delete "$DROPBOX_DIR/$LAST.tgz" #这里的脚本路径可以根据需要进行修改
else
  echo "ERROR. Now exiting..."
  exit 1
fi

if [ $? -eq 0 ]; then
  echo "Cleaning the backups..."
  rm -f "$BACKUP_DST/$NOW-Databases.sql"
  rm -f "$BACKUP_DST/$LAST.tgz"
else
  echo "ERROR. Now exiting..."
  exit 1
fi

其中的dropbox\_uploader.sh是Dropbox上传下载脚本,主页:http://www.andreafabrizi.it/?dropbox_uploader

apt-get install git
git clone http://github.com/andreafabrizi/Dropbox-Uploader.git
cd Dropbox-Uploader
chmod +x dropbox_uploader.sh
mv dropbox_uploader.sh /home/backup/

初始化脚本,并按照脚本中的提示到对应的Dropbox的网页中创建API,在脚本的交互界面中输入生成的Key

./dropbox_uploader.sh

申请Dropbox访问API申请Dropbox访问API
允许API访问你的Dropbox允许API访问你的Dropbox

初始化完成以后,便可以立即执行一次backup.sh脚本进行备份了

/home/backup/backup.sh

定时任务

光弄好了脚本可不行,没添加定时任务怎么定时备份。

crontab -e

设置为每天执行一次备份,具体时间可以根据需要进行修改

30 1 \* \* \* sh /home/backup/backup.sh