RHEL5 配置 RSYNC
很早就是知道这个东西,但是一直没有去实现。懒。。。。。
今天自己也做一下。
首先在服务端和客户端都安装rsync,我的RHEL5默认已经安装好了。
[root@station203 ~]# rpm -qa | grep rsync
rsync-2.6.8-3.1
要启动rsync服务器有多种方法:
源代码安装的可以用:/rsync-path/bin/rsync -daemon
rpm安装的就可以用xinet来启动,我的RHEL5默认没有安装xinet
[root@station203 ~]# rpm -ivh /mnt/cdrom/Server/xinetd-2.3.14-10.el5.i386.rpm
[root@station203 ~]# vim /etc/xinetd.d/rsync
disable = no ## 默认yes 改成 no
## rsync的端口默认是873
/rsync-path/bin/rsync -daemon --port=*** 可以指定端口
现在创建rsync服务器的配置文件
[root@station203 ~]# vim /etc/rsyncd.conf
uid = root
gid = root
hosts allow = 192.168.0.204,192.168.1.205
#hosts deny = 0.0.0.0/32
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
## 上面这段是全局配置,下面的模块可以有多个
[jason] ## 模块名字,自己命名
path = /jason
comment = rsync files
ignore errors
read only = yes
list = no
auth users = jason ## 同步验证时用什么账号,假如这里没有这项,就是匿名同步,client同步时,不用
用户也能同步。
secrets file = /etc/rsync.passwd ## 指定认证文件
然后创建认证文件
[root@station203 ~]# vim /etc/rsync.passwd
jason:123456 ## 用户名:密码。注意这个不是系统用户,只是rsync用户。所以不用useradd。
[root@station203 ~]# chmod 600 /etc/rsync.passwd ## 只能所有者可读,否则报错
下面准备要同步的内容:
[root@station203 ~]# mkdir /jason
[root@station203 ~]# cp ./* /jason
[root@station203 ~]# service xinetd start
Starting xinetd: [ OK ]
[root@station203 ~]# netstat -anp | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3169/xinetd
在客户端测试:
[root@station204 ~]# rsync -vzrtopg --delete
[email protected]::jason /backup/jason
receiving file list ... rsync: readlink "/install.log" (in jason) failed: Permission denied (13)
rsync: readlink "/install.log.syslog" (in jason) failed: Permission denied (13)
rsync: readlink "/anaconda-ks.cfg" (in jason) failed: Permission denied (13)
。。。。。。
返回服务器端,查原因
[root@station203 jason]# setenforce 0
再测试
[root@station204 ~]# rsync -vzrtopg --delete
[email protected]::jason /backup/jason
Password: ## 输入密码123456
receiving file list ... done
./
anaconda-ks.cfg
install.log
install.log.syslog
sent 142 bytes received 9301 bytes 6295.33 bytes/sec
total size is 34619 speedup is 3.67
终于OK了。
## 解释rsync命令
--progress
是指显示出详细的进度情况,我没有加
--delete
rsync 把需要的文件复制到目标计算机,但是并不删除额外文件。通过使用 --delete 选项,目标目录会与原目录保持完全一致
--exclude="*.sh"
排除一部分文件,可以有多个--exclude=
--include
选择要同步的文件
--password-file
指定client端密码文件存放路径
--compress-level=level
指定压缩的级别
--compress(或 -z)
指定将压缩数据
--recursive (-r)
选项让 rsync 递归地复制所有目录
--dirs 选项 (-d)
产生相反的效果:跳过子目录及其内容
--times、--perms、--owner 和 --group 或 -tpog
分别让 rsync 保持原来的更新时间戳、权限、所有者和组信息,同时指定所有这些选项的简便方法是使用 --archive(或 -a),
这还会设置 --recursive 和 --links 选项。
--verbose、--progress 和 --stats
提供关于 rsync 正在执行的操作的大量信息
如果不指定--password-file,就要交互式输入密码才能同步。
我们可以在client创建一个密码文件。
[root@station204 ~]# vim /etc/rsync.passwd
123456 ## 只要密码就OK,不要用户名。
[root@station204 ~]# chmod 600 /etc/rsync.passwd ## 只能所有者可读,否则会报错
[root@station204 ~]# rsync -vzrtopg --delete
[email protected]::jason /backup/jason --password-
file=/etc/rsync.passwd
现在不用交互输入密码了。可以吧这句写到cron中去,做定时同步。