rsync 配置
1.安装rsync和配置文件
root@localhost ~]# yum -y install rsync #安装rsync服务 #CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync。
[root@localhost ~]# vim /etc/xinetd.d/rsync service rsync { disable = yes flags = IPv6 socket_type = stream wait = no #yes改为no user = root server = /usr/bin/rsync server_args = --daemon #在后面添加 rsync 的服务选项 log_on_failure += USERID }[root@localhost ~]# chkconfig rsync on #添加开机启动1.配置rsyncd.conf主配置文件:
[root@localhost ~]# mkdir /etc/rsyncd #创建独立文件夹创建rsync服务的文件 [root@localhost ~]# touch /etc/rsyncd/rsyncd.conf #创建主配置文件 [root@localhost ~]# ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf #创建软连接到/etc/下
[root@localhost var]# vim /etc/rsyncd.conf uid = root #以什么用户启动 gid = root #以什么组启动 use chroot = no #若为 true,则 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限,并且不能备份指向 path 外部的符号连接所指向的目录文件。 max connections = 2 #指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。 motd file = /etc/rsyncd.motd #指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,相当于欢迎界面 strict modes = yes #指定是否监测口令文件的权限。若为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。 port = 873 #指定 rsync 守护进程监听的端口号。 由 xinetd 运行时将忽略此参数,使用命令行上的–port 选项替代。 pid file = /var/run/rsyncd.pid #rsync 的守护进程将其 PID 写入指定的文件。 lock file = /var/run/rsync.lock #指定支持 max connections 参数的锁文件。 log file = /var/log/rsyncd.log #指定 rsync 守护进程的日志文件,而不将日志发送给 syslog。 read only = yes #指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。 list = no #指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为 false,可以创建隐藏的模块 hosts allow = 192.168.199.0/24 #同意访问客户机hosts deny = * #拒绝访问客户机 [test] # 模块名字,自己命名 path = /test #指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的。 comment = test #给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。 ignore errors #指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作,以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。 read only = no #指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。 write only = no #指定是否允许客户下载文件。若为 true 则不允许下载;若为 false 并且服务器目录也具有读权限则允许下载。 list = yes #指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为 false,可以创建隐藏的模块。 auth users = root #指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。secrets file = /etc/rsyncd.passwd #指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用。 [etc] path = /etc comment = etc ignore errors read only = no write only = no list = yes auth users = root secrets file = /etc/rsyncd.passwd
2.配置启动文件
[root@localhost rsyncd]# vim rsyncd.passwd #编辑认证文件 root:123123 #用户名:密码。注意这个不是系统用户,只是rsync用户。所以不用useradd。
[root@localhost rsyncd]# chmod 600 rsyncd.passwd #修改认证文件权限为600,否则报错。
[root@localhost rsyncd]# vim rsyncd.motd#编辑欢迎文件,修改权限为600.
+++++++++++++++++++++++++++++++++++++++++++++++ Welcome to my rsync service! +++++++++++++++++++++++++++++++++++++++++++++++ [root@localhost ~]# /usr/bin/rsync –daemon #启动rsync [root@localhost ~]# netstat -anp | grep 873 #查看是否启动 tcp 0 0 :::873 :::* LISTEN 5244/xinetd
[root@localhost ~]# iptables -A INPUT -p tcp --dport 873 -j ACCEPT #添加iptables开放873端口
[root@localhost rsyncd]# rsync --list-only root@192.168.199.122:: #显示列表 +++++++++++++++++++++++++++++++++++++++++++++++ Welcome to my rsync service! +++++++++++++++++++++++++++++++++++++++++++++++ test test etc etc
3.添加开机启动
[root@localhost test]# vim /etc/rc.local #编辑 /usr/bin/rsync –daemon #添加
4.参数场景配置
rsync中的参数
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r 是递归 -l 是链接文件,意思是拷贝链接文件;
-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件; -z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
-e ssh的参数建立起加密的连接。 -u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
--progress是指显示出详细的进度情况 --delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致 --password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
方法1: [root@localhost test]# rsync -avzP root@192.168.199.133::test /test #从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式 +++++++++++++++++++++++++++++++++++++++++++++++ Welcome to my rsync service! +++++++++++++++++++++++++++++++++++++++++++++++ Password: 方法2 [root@localhost test]# rsync -avzP /test root@192.168.199.133::test #从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。 +++++++++++++++++++++++++++++++++++++++++++++++ Welcome to my rsync service! +++++++++++++++++++++++++++++++++++++++++++++++ Password: 方法3 免密备份 客户端定义认证文件: [root@localhost test]# vim /etc/rsyncd/rsyncd.passwd 123123 #直接指定密码不用指定用户名 [root@localhost test]# rsync -vzrtopg root@192.168.199.133::test /test --password-file=/etc/rsyncd/rsyncd.passwd +++++++++++++++++++++++++++++++++++++++++++++++ Welcome to my rsync service! +++++++++++++++++++++++++++++++++++++++++++++++ receiving incremental file list skipping non-regular file "back/var/mail" skipping non-regular file "back/var/lib/gdm/.pulse/997d870c33d694e1e7465ed300000012-runtime" back/var/cache/yum/x86_64/6/updates/ back/var/cache/yum/x86_64/6/updates/78c4a5d42daa4bba56936a0d2d6b0bd8efc776617ef029f207d4d929ebe08541-other.sqlite 方法4 备份至本地 [root@localhost test]# rsync -vzrtopg --progress /test/ /tmp/test/
定义定时备份机制:
[root@localhost test]# crontab -e 00 20 * * * /usr/bin/rsync -vzrtopg --progress /test/ /tmp/test/ #每天晚上8点