备份方式
双重备份。即网站服务器本机备份和本地专用存储服务器备份。
传输方式
数据文件以sftp方式进行传输
- 优点:更安全。加密传输认证信息和传输的数据
- 缺点:效率低。使用了加密/解密技术,传输效率比普通的FTP要低得多。
基本安装与配置
以192.168.30.129模拟网站服务器,192.168.30.128模拟本地专用备份数据服务器。
- 两台服务器使用yum安装vsftpd 、ftp并开启vsftpd服务/添加iptables协议,开方21端口
- 对vsftpd.conf文件进行配置,如下:
[root@CentOS2 vsftpd]# vi /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
自动备份思路
|
|
前面讲过备份方式为双重备份,整个备份过程全由计算机自动处理完成,无须人为干预,大大提高效率。每周五对数据进行备份,思维图如下:
思维图:
192.168.30.129(网站服务器) 192.168.30.128本地备份服务器
说明:通过两个shell脚本执行自动化管理,一个在30.129上执行对备份的数据进行打包并压缩,并在本地进行数据存放。另一个在30.128上执行,通过sftp功能对30.129上打包的数据进行下载。
操作过程
(1)在30.129上
我们需要备份30.129上文件目录/var/lib/mysql/ganqi_cms/以及/var/www/collect两个目录文件,其中collect目录中cache、images以及Images三个目录不需要备份。
另外,ganqi_cms目录文件不但要备份至30.128上,而且还要在本机30.129上另存一份。
编写shell脚本命名为:Auto_backup.sh
#!/bin/sh
MYDATE=`date +%F`
#将日期赋予变量MYDATE
tar -zcvf /root/mysql_bak/ganqi_cms_$MYDATE.tar.gz /var/lib/mysql/ganqi_cms/
#将ganqi_cms打包压缩存入/root/mysql_bak/做本地备份
tar -zcvf /tmp/ganqi_cms_$MYDATE.tar.gz /var/lib/mysql/ganqi_cms/
#将ganqi_cms放入/tmp目录下做远程下载备份
tar -zcvf /tmp/collect_$MYDATE.tar.gz --exclude=/var/www/collect/cache --exclude=/var/www/collect/images --exclude=/var/www/collect/Images /var/www/collect
#将collect文件打包压缩并放入/tmp目录下做远程下载备份
对Auto_backup.sh进行权限设置,使其具有执行权限
chmod 755 /usr/local/sh/Auto_backup.sh ,运行Auto_backup.sh在/tmp下将获得以时间结尾的打包压缩文件collect和ganqi_cms文件,并且30.129上对ganqi_cms也进行了存放
(2)在30.128上
30.129上工作已经完成,现在需要通过sftp对其进行下载。
1.生成密钥对,使shell脚本运行后能自动登入sftp而无须输入密码,操作如下:
在30.128上进行如下 操作
[root@CentOS1 .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #我用空格
Enter passphrase (empty for no passphrase): #我用空格
Enter same passphrase again: #我用空格
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
76:00:40:20:72:8a:da:45:5f:1b:57:ce:d9:40:b4:35 root@CentOS1
The key's randomart image is:
+--[ RSA 2048]----+
|o oo+.. o .+= E |
|o+ . . o + o * . |
|o . . o = . |
|.. . . |
|. . S . |
| . . |
| |
| |
| |
+-----------------+
You have new mail in /var/spool/mail/root
[root@CentOS1 .ssh]# ls
id_rsa id_rsa.pub
生成公钥id_rsa.pub和私钥id_rsa,将公钥id_rsa.pub复制到30.129目录~/..ssh下(如果没有.ssh就创建一个目录),并改名为authorized_keys ,OK,在30.128上登入sftp即可无须输入密码。
无密码登入sftp设置好后便可创建sftp自动下载脚本Auto_sftp.sh,创建准备要存放下载的目录collect_bak 和mysql_bak如下:
#!/bin/sh
MYDATE=`date +%F`
sftp 192.168.30.129 << EOM
get /tmp/collect_$MYDATE.tar.gz /home/collect_bak
get /tmp/ganqi_cms_$MYDATE.tar.gz /home/mysql_bak
bye
EOM
ok,完成
定时任务
这是最后一步,设置定时任务crontab –e
在30.129上设定时:0 5 * * 5 /usr/local/sh/Auto_backup.sh每周五5点进行打包
在30.128上设定时:0 7 * * 5 /usr/local/sh/Auto_sftp.sh每周五7点进行下载
全部任务已经完成,可以放心的去睡觉了。在定时上30.129的时间设置要早于30.128哦!
补充:我们使用的ssh都是默认的端口22,如果修改过端口需在Auto_sftp.sh脚本的sftp登入中加 –oPort=端口 sftp –oPort=22004 root@192.168.30.129