rsync工具简介
rysnc是一个数据镜像及备份工具,具有可使本地和远程两台主机的文件,目录之间,快速同步镜像,远程数据备份等功能。在同步过程中,rsync是根据自己独特的算法,只同步有变化的文件,甚至在一个文件里只同步有变化的部分,所以可以实现快速的同步数据的功能。
下面所讲的简单的rsync同步方法,依赖于SSH服务。一般rsync,ssh软件包都会默认安装的。检查方法:rpm -qa|grep -i rsync
注意:在实行备份方案前请用其他目录进行测试以防错误,切记!!
[root@mailsvr ~]# rsync -aSvH /home/* [email protected]:/home/
提示输入192.168.1.2机器的root用户密码,输入即可开始同步。
参数解释:
a 等同于 -rlptgoD 归档模式,就是保持文件所有属性、权限不变
S 有效的处理零散文件
v verbose模式
H 保持hard links
上面这个表示 将本机的/home目录下所有的文件,同步到192.168.1.2机器的/home目录下。。
上面红色标记是源文件位置 蓝色标记是目的位置
如果想每次同步之后,两边的文件保持一致,需要添加参数–delete,添加这个参数时,一定要注意测试,否则会造成严重后果,删除了数据。
[root@mailsvr ~]# rsync -aSvH –delete /home/* [email protected]:/home/
[root@mailsvr ~]# rsync -aSvH [email protected]:/home/* /home/
上面这条表示,将远程机器192.168.1.2机器上的/home目录下所有的文件,同步到本地的/home目录下,同步的时候注意源和目的,前面的是源文件位置,后面的目的文件位置
上面的命令,执行的时候,需要输入192.168.1.2机器的root用户密码,这样很烦,可以两台机器做个ssh信任,省去每次输入密码,在添加crontab自动执行。自动同步数据。
下面是2台主机建立ssh信任
A机器 192.168.1.1
B机器 192.168.1.2
[root@mailsvr ~]# 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:
65:4a:68:cc:6c:23:2b:04:1a:3c:ee:d7:af:e7:e3:8d root@mailsvr
[root@mailsvr ~]#
然后把公匙传到B机的/root/.ssh中:
[root@mailsvr .ssh]# scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
[email protected]’s password:
id_rsa.pub 100% 219 0.2KB/s 00:00
[root@mailsvr .ssh]#
验证一下,ssh登陆到B机,是否不需要输入密码,如果不用则建立成功
[root@mailsvr .ssh]# ssh 192.168.1.2
Last login: Fri Jun 6 09:59:28 2008 from 192.168.1.1
[root@mailsvr ~]#
下面是rsync的另一种方法,服务器端和客户端使用。
两台机器都需要安装软件包,这里不罗嗦了。
服务器端配置:
rysnc一般是通过xinetd进行启动的。
修改/etc/xinetd.d/rsync,只修改一个地方
# default: off
# description: The rsync server is a good addition to am ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = yes 修改为disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = –daemon
log_on_failure += USERID
接下来编辑配置文件
[root@mailsvr ~] # cat /etc/rsyncd.conf
uid = root #root用户访问
gid = root #root组用户访问
use chroot = no #不能使用chroot
max connections = 9 #最大连接数
list = yes #允许列出文件清单
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
hosts allow = 192.168.1.2 #只允许这个主机访问
[data] #发布项
path = /home/data/ #发布的路径
ignore errors
read only = yes #只读
auth users = root #认证用户为root
secrets file = /etc/sery.pass #密码文件
————————————————————————————
下面是密码文件
[root@mailsvr ~] # cat /etc/sery.pass
root:123456
权限为600
服务器端配置完成,客户端只需要安装rsync包即可
接下来创建密码文件
[root@mailsvr ~] # cat /etc/sery.pass
123456 #这里只需要输入服务器端密码文件中定义的密码即可。
使用命令开始同步
[root@mailsvr ~] # rsync -aSvH –password-file=/etc/sery.pass [email protected]::data /home/
解释:
–password-file=/etc/sery.pass 这段是密码文件,如果不加这段,需要手动输入服务器端定义好的密码。
[email protected]::data 这里的:data是服务器端的发布项。
如果文件比较大,可以使用nohup将进城放在后台执行,
[root@mailsvr ~] # nohup rsync -aSvH –password-file=/etc/sery.pass [email protected]::data /home/ >rsync.log &
上面的表示将远程机器192.168.1.2机器上发布的data目录,同步到本地机器的/home/目录下。