rsync是Linux、UNIX系统下的数据镜像备份工具,它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
6、支持匿名传输。
今天就利用rsync+crontab来实现Linux服务器间的定时增量备份。
环境说明:
工作服务器A:IP地址 192.168.1.86,操作系统 CentOS 5.5,已建立用户 tom
备份服务器B:IP地址 192.168.1.87,操作系统 CentOS 5.5,已建立用户 jack(uid 503, gid 503)
实现目的:
每天早上3点,将A服务器上的用户目录/home,自动备份到B服务器的/home/jack/backup-A下,备份增量进行,不需要任何用户交互。
配置步骤:
1、配置备份服务器B
1)[root@Server-B ~]# rpm -qa| grep rsync #查看是否有rsync包
rsync-2.6.8-3.1
以上输出说明rsync已经装好了,保证/etc/services有下面的行
2)rsync的rpm包本身没有附带rsyncd的配置文件,需要手动创建它(/etc/rsyncd.conf)
[root@Server-B ~]# vi /etc/rsyncd.conf
3)修改/etc/xinetd.d/rsync,打开rsync服务
[root@Server-B ~]# vi /etc/xinetd.d/rsync
4)开启rsyncd服务,并设置系统启动时,加载rsync服务
[root@Server-B ~]# /usr/bin/rsync --daemon
5)检验rsync服务是否启动成功
有如下内容表示已经成功启动
6)配置ssh的非交互式登录
思路:服务器A生成一对RSA密钥,自己保留私钥,将私钥附加到登录服务器B的authorized_keys中,A登录B,以及进行A到B的rsync就不用交互式输入密码了。
>>在服务器A上生成一对密钥(以root的身份执行)
>>远程登录到备份服务器B上并且创建.ssh目录。
[root@Server-A ~]# ssh jack@192.168.1.87
…
[jack@Server-B ~]$ mkdir .ssh;chmod 0700 .ssh
>>在A机上执行远程拷贝公钥到B机:
[root@Server-A ~]# scp .ssh/id-rsa.pub root@192.168.1.87: /home/jack/.ssh/authorized_keys
这样,无交互的ssh登录就完成了。特别注意的是B服务器的.ssh目录权限,最好是700,如果赋予它过多的权限,无交互登录可能不生效!
7)编制备份脚本
在服务器A上编写一个备份脚本,放置在/home/tom/public_scripts下,名为backup.sh
#!/bin/sh
TARGET_DIR=backup-A
for SOURCE_DIR in “/home”
do
echo “Backing up $SOURCE_DIR …”
rsync -au –delete $SOURCE_DIR jack@192.168.1.87:/home/jack/$TARGET_DIR
done
[root@Server-A public_scripts]# chmod 755 backup.sh
该脚本权限设置为755,以便其他用户可访问到。
8)修改计划任务
在服务器A上,用root身份执行以下命令
[root@Server-A ~]# crontab -e
3 * * * * /home/tom/public_scripts/backup.sh