自动备份网站到 ftp 并给压缩包加上密码

时间:2016-7-6    作者:晨曦    分类:


43280_1606540.jpg

自动备份网站到 ftp 并给压缩包加上密码12月01日

这个 shell script 的功能是把网站打包成 zip 传送到 ftp 的同时、给 zip 压缩包加上密码


用法很简单,将这个 shell script 加入到 cronjobs,例如我需要每日 3 点备份可以这样做:


单击查看源代码(view source)

1

crontab -e

在编辑状态下,加入如下行:


1

0 3 * * * /root/backup.sh 2>&1 | tee -a /root/backup.log

然后新建 /root 目录下的 backup.sh,完善如下内容后、把内容写入到 backup.sh:


01

#!/bin/bash

02

MYSQL_USER=数据库账户

03

MYSQL_PASS=数据库密码

04

FTP_USER=备份空间的 FTP 账户

05

FTP_PASS=备份空间的 FTP 密码

06

FTP_IP=备份空间的 FTP 主机

07

FTP_backup=备份在 FTP 的哪个目录

08

WEB_DATA=需要备份的目录

09

ZIP_PASS=压缩包密码

10

 

11

#定义数据库的名字和旧数据库的名字

12

DataBakName=Data_$(date +"%Y%m%d").zip

13

WebBakName=Web_$(date +%Y%m%d).zip

14

OldData=Data_$(date -d -7day +"%Y%m%d").zip

15

OldWeb=Web_$(date -d -7day +"%Y%m%d").zip

16

 

17

#删除本地3天前的数据

18

rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").zip /home/backup/Web_$(date -d -3day +"%Y%m%d").zip

19

cd /home/backup

20

 

21

#导出数据库,一个数据库一个压缩文件

22

for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do

23

    (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)

24

done

25

 

26

#压缩数据库文件为一个文件

27

zip -q -r -P $ZIP_PASS /home/backup/$DataBakName /home/backup/*.sql.gz

28

rm -rf /home/backup/*.sql.gz

29

 

30

#压缩网站数据

31

zip -q -r -P $ZIP_PASS /home/backup/$WebBakName $WEB_DATA

32

 

33

#上传到FTP空间,删除FTP空间7天前的数据

34

ftp -v -n $FTP_IP << END

35

user $FTP_USER $FTP_PASS

36

type binary

37

cd $FTP_backup

38

delete $OldData

39

delete $OldWeb

40

put $DataBakName

41

put $WebBakName

42

bye

43

END

信息部分填写例子如下:


1

MYSQL_USER=root

2

MYSQL_PASS=123465

3

FTP_USER=ftp

4

FTP_PASS=123456

5

FTP_IP=192.168.1.1

6

FTP_backup=/backup

7

WEB_DATA=/home/wwwroot

8

ZIP_PASS=123456

保存完记得给 backup.sh 加上权限(chmod +x /root/backup.sh)


小结


这个脚本是改的在网上找的备份 tar.gz 的脚本,出处不知道是在哪里,就不注明了。


如果您是作者本人,需要我加上来源的请在下方留言即可。