Linux自动备份
1. 利用的工具:rsync,ssh
2. 特点:
  • l 检查原文件并只复制发生变化的数据块
  • l 使用ssh加密数据
  • l 允许传输前压缩
  • l 从源系统移除数据时,在目标系统上自动移除
  • l 允许设置WAN连接的数据传输速度
  • l 具有复制设备文件的能力
3. 简单的备份示意图
clip_p_w_picpath002
图 1:备份示意图
4. Ssh服务器与客户端设置
为了实现自动双向验证,我们通过公钥验证,这里用root来连接服务器,首先更改ssh服务器的ssh服务配置文件/etc/ssh/sshd_config.
如下图:去掉:椭圆里前面的注释:
clip_p_w_picpath004
图 2
然后重启服务:#service sshd restart。
为客服端的root用户生成密钥对:
#ssh-keygen -t rsa
如图3所示,将在家目录下的.ssh/ 目录下生成id_rsa,id_rsa.pub文件,其中前面一个是私钥,后面一个是公钥
clip_p_w_picpath006
图 3
将公钥id_rsa.pub的内容复制到ssh服务器的/root/.ssh/authorized.keys文件里。
这样服务器就可以通过公钥对root用户认证,而客户端对服务器的认证是在首次连接时,自动从服务器下载服务器公钥,并放在~/.ssh/known_hosts里。
最后一步:运行一下#ssh-add 命令
然后测试:
在客服端输入:
#ssh cluster2 hostname
命令,如果成功的话将直接输出hostname运行结果,而没有输入密码提示。
5. 配置rsync:
我们创建在rsync主服务器(ssh客服端)上创建一个测试目录:
#mkdir /www
#echo “this is a rsync test” > /www/index.html
运行rsync命令:
#rsync -v -a -z -e ssh --delete /www/ cluster2:/www
-v 显示操作信息
-a 目录下的文件及目录
-z 压缩
-e ssh 通过ssh传输
/www/ 源目录,注意要以“/”结尾
后面就是备份目标了,详细的rsync选项请查阅在线文档
将远程文件“拉”到本地,只需将源路径和目标路径交换。
6. 剩下的就是通过cron作业,定期复制备份了。如下
#crontab -e
30 * * * * rsync -v -a -z -e ssh --delete /www/ cluster2:/www >/dev/null 2>&1
这样每隔30分钟自动同步一次。