VPS脚本自动备份数据到Dropbox

  • A+
所属分类:VPS教程

UPDATE:2017/7/8:新增nginx配置文件和PHP配置文件备份
UPDATE:2017/7/17:解决重复备份问题
UPDATE:2017/11/4:新增删除一周前的备份文件。

VPS脚本自动备份数据到Dropbox

第一步:登录VPS,安装dropbox客户端

32位系统
cd ~ && wget -O - "http://www.dropbox.com/download?plat=lnx.x86" | tar xzf -

64位系统
cd ~ && wget -O - "http://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

完成后,会在用户根目录~下产生隐藏文件夹.dropbox-dist

[root@affdalao ~]# ls -a
.   .bash_history  .bash_profile  .cshrc         .local          .pki             shadowsocks.sh  .tcshrc
..  .bash_logout   .bashrc        .dropbox-dist  .mysql_history  shadowsocks.log  .ssh
[root@affdalao ~]# cd .dropbox-dist/
[root@affdalao .dropbox-dist]# ll
total 12
-rwxr-xr-x 1 clamav clamav  100 Apr  7 01:00 dropboxd
drwxr-xr-x 8 clamav clamav 4096 Apr  7 01:00 dropbox-lnx.x86_64-23.4.18
-rw-r--r-- 1 clamav clamav    7 Apr  7 01:00 VERSION
[root@affdalao .dropbox-dist]# ./dropboxd
This computer isn't linked to any Dropbox account...
Please visit https://www.dropbox.com/cli_link_nonce?nonce=XXXXXXXX (用浏览器访问此网址,绑定dropbox账号)to link this device.
(出现下面Welcome,说明绑定成功)
This computer is now linked to Dropbox. Welcome xxx

用浏览器访问此网址,绑定dropbox账号

VPS脚本自动备份数据到Dropbox

第二步:运行完成后会在根目录下生成Dropbox目录,进入此目录建立软连接

[root@affdalao .dropbox-dist]# cd ..
[root@affdalao ~]# ll
total 76
drwx------ 3 root root  4096 Apr  8 12:50 Dropbox
-rw-r--r-- 1 root root 54429 Feb 19 22:17 shadowsocks.log
-rwxr-xr-x 1 root root 12637 Feb 19 22:14 shadowsocks.sh
[root@affdalao ~]# cd Dropbox/
[root@affdalao Dropbox]# ll
total 996
-rw-r--r-- 1 root root 1013655 Apr  8 12:19 Dropbox 使用入门.pdf
[root@affdalao Dropbox]# mkdir /home/backup
[root@affdalao Dropbox]# ln -s /home/backup
[root@affdalao Dropbox]# ll
total 996
lrwxrwxrwx 1 root root      16 Apr  8 12:52 backup -> /home/backup
-rw-r--r-- 1 root root 1013655 Apr  8 12:19 Dropbox 使用入门.pdf

第三步:创建网站备份脚本,因为dropbox是双向备份同步(即:VPS删除数据,dropbox也会删除,dropbox删除数据,VPS也会删除数据),所以推荐把网站目录复制一份在同步。

[root@affdalao ~]# vi backup.sh 
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

#Date:2017/4/8    version:1.0

#你的网站备份目录
BACKUP_SRC="/home/backup" 
#你的网站目录
BACKUP_WWW="/home/"
#当前日期
NOW=$(date +"%Y.%m.%d")    
#你的数据库地址    
MYSQL_SERVER="127.0.0.1" 
#你的数据库用户名    
MYSQL_USER="你的mysql用户名"      
#你的数据库密码    
MYSQL_PASS="你的数据库密码"    
#Nginx 配置文件地址
NGINX_CONF="/etc/nginx/nginx.conf"
NGINX_CONF1="/etc/nginx/conf.d"
#PHP配置文件
PHP_CONF="/usr/local/php/etc"

#取当前日期,1表示周一

#DAY=$(date +"%u") 

start() {

#dump数据库数据,以及备份网站整站文件

mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS 需要备份的数据库 > "$BACKUP_SRC/$NOW-Databases.sql"

#cp -r $BACKUP_WWW $BACKUP_SRC

#一周备份一次数据开启选项
#if [ "$DAY" -eq "7" ];
#then
tar Pcfz "$BACKUP_SRC/$NOW-affdalao.tgz" $BACKUP_WWW  $BACKUP_SRC/$NOW-Databases.sql $NGINX_CONF $NGINX_CONF1 $PHP_CONF
 
#删除一周前的备份文件
rm -rf $BACKUP_SRC/$(date -d -7day  +"%Y.%m.%d")-affdalao.tgz

#删除生成的mysql备份文件
rm -rf  $BACKUP_SRC/$NOW-Databases.sql

#fi
echo "starting dropbox"
/root/.dropbox-dist/dropboxd &
}

stop() {
echo "stoping dropbox"
pkill dropbox
}

restart() { 
stop 
sleep 1 
start 
}

case "$1" in 
start) 
$1 
;; 
stop) 
$1 
;; 
restart) 
$1 
;;
*) 
exit  
esac

第四步:然后数据就备份到dropbox了。

VPS脚本自动备份数据到Dropbox

PS:好久没写shell,都忘记了。

手动备份数据:

手动备份数据
sh backup.sh restart

开启数据备份
sh backup.sh start

关闭数据备份
sh backup.sh stop

定时数据备份
[root@affdalao ~]# crontab -l
30 0 * * * yum update -y --skip-broken &>/tmp/yum.log
1  3  * * * /usr/local/clamav/bin/freshclam 
30 3  * * *  /usr/local/clamav/bin/clamscan  --infected  -r /  --remove -l /var/log/clamscan.log
0 4 * * * sh /root/backup.sh restart  (每天4点备份数据)
0 5 * * * sh /root/backup.sh stop     (每天5点关闭数据备份)

UPDATE:2017/4/9,定时任务顺利进行

[root@affdalao ~]# ll Dropbox/backup/
总用量 59192
-rw-r--r-- 1 root root 21407812 48 14:51 2017.04.08-affdalao.tgz
-rw-r--r-- 1 root root 39192385 49 04:00 2017.04.09-affdalao.tgz

VPS脚本自动备份数据到Dropbox

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: