原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1431426
环境 CentOS6.5 x86_64位 采用最小化安装,系统经过了基本优化 selinux为关闭状态,iptables为无限制模式 源码包存放位置:/root
[root@rsync-server ~]# rpm -qa|grep rsync rsync-3.0.6-9.el6_4.1.x86_64
[root@rsync-server ~]# yum install rsync -y
[root@rsync-server ~]# yum install -y kernel-headers glibc-headers glibc-devel libgomp gcc gcc-c++
[root@rsync-server ~]# wget http://rsync.samba.org/ftp/rsync/rsync-3.1.1.tar.gz [root@rsync-server ~]# tar zxvf rsync-3.1.1.tar.gz [root@rsync-server ~]# cd rsync-3.1.1 [root@rsync-server rsync-3.1.1]# ./configure --prefix=/usr/local/rsync[root@rsync-server rsync-3.1.1]# make && make install
[root@rsync-server /]# rsync /rsync drwxr-xr-x 4096 2014/06/04 00:45:06 rsync [root@rsync-server /]# rsync /rsync/ drwxr-xr-x 4096 2014/06/04 00:45:06 . -rw-r--r-- 0 2014/06/04 00:45:01 a -rw-r--r-- 0 2014/06/04 00:45:03 b -rw-r--r-- 0 2014/06/04 00:45:05 c -rw-r--r-- 0 2014/06/04 00:45:06 d [root@rsync-server /]# ls -dl /rsync drwxr-xr-x. 2 root root 4096 Jun 4 00:45 /rsync [root@rsync-server /]# ls -l /rsync total 0 -rw-r--r--. 1 root root 0 Jun 4 00:45 a -rw-r--r--. 1 root root 0 Jun 4 00:45 b -rw-r--r--. 1 root root 0 Jun 4 00:45 c -rw-r--r--. 1 root root 0 Jun 4 00:45 d
[root@rsync-server /]#
rsync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... SRC [SRC]... DEST 1)rsync为同步的命令 2)[OPTION]... 为同步时的参数选项 3)SRC为源,即需要拷贝的分区,文件或目录等 4)[DEST]为目地分区,文件或目录等
-n : 如果担心命令执行不正确,一同步复制,可能这个复制的后果是致命的,那后果可就严重了,这里我们可以加-n先测试一下 -v : --verbose,详细输出模式,显示详细过程 -q : --quiet,静默模式,尽可能输出少的信息 -c : --checksum,可以对传输的文件进行较验的,强制对文件传输进行校验 -r : --recursive,递归复制 -p : --perms,保存文件的权限 -t : --times,保留文件的时间戳 -l : --links,保留文件的符号链接 -g : --group,保留文件的属组 -o : --owner,保留文件的属主 -D : --devices,保留设备文件 -A : --acls,保留acl访问控制列表 -a : --archives归档,复制时可以保存原有的属主属主等属性信息,甚至包括一点额外的属性。等同于-rlptgoD -e SSH : 远程复制时,表示使用ssh协议作承载。如果ssh端口不是22,可以用-e ‘ssh -p 22’ -z : 基于网络时使用,对文件压缩后传输 --progress : 显示压缩进度条的,简写-P --stats : 显示如何执行压缩和传输的,也就是显示传输状态的 --
[root@rsync-server /]# rsync -a /rsync /backup #会把目录rsync直接同步至/backup目录中去 [root@rsync-server /]# rsync -a /rsync/ /backup #会把目录中的data/中的内容同步至/backups目录中
[root@rsync-server ~]# mkdir /rsync #创建rsync测试目录 [root@rsync-server ~]# touch /rsync/test #在rsync测试目录下建立test.txt文件 [root@rsync-server ~]# chmod -R 700 /rsync #授权一下以查看同步后是不是保持了权限属性 [root@rsync-server rsync]# ll -a /rsync/ total 8 drwx------. 2 root root 4096 Jun 4 01:01 . dr-xr-xr-x. 26 root root 4096 Jun 4 01:01 .. -rwx------. 1 root root 0 Jun 4 01:01 test [root@rsync-server ~]# rsync -avz /rsync/ /tmp sending incremental file list ./ test sent 78 bytes received 34 bytes 224.00 bytes/sec total size is 0 speedup is 0.00 [root@rsync-server ~]# ls -l /tmp/test -rwx------. 1 root root 0 Jun 4 01:01 /tmp/test
拉取pull :rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST 推送push:rsync [OPTION]... [USER@]HOST:SRC [DEST]
1)Rsync为同步的命令 2)[OPTION]... 为同步时的参数选项 3)[USER@]HOST... 为Rsync同步的远程的连接用户和主机地址 4)SRC为源,即需要拷贝的分区、文件或目录等,和HOST之间用一个冒号连接 5)[DEST]为目地分区、文件或目录等
[root@rsync-server ~]# rsync -vzrtopg –progress -e ‘ssh -p 22’ root@172.16.100.1:/etc /backup
语法说明:
1)-vzrtopg 相当于上文的-avz,表示同步时文件和目录属性不变。 2)--progress 显示同步的过程,可以用-p替换 3)-e ‘ssh -p 22’,表示通过ssh的通道传输数据。如果ssh是默认的22号端口,此处的-p 22可省略。 4)root@192.168.1.111:/etc 远程的主机用户,地址,路径 5)/backup本地(172.16.100.2)的路径
[root@rsync-server ~]# rsync -avz --progress -e ‘shh -p 22’ /webrepo root@172.16.100.1:/data/web/html
1)上面两个例子中的数据同步都是加密传输的,因为是通过ssh通道进行数据传输的。2)在传输前需要进行连接用户(一般为系统用户)密码验证,需要手工输入。这里我们可以通过配置ssh互信来实现免验证方式同步。3)rsync软件必须安装在本地及远程服务器上
uid = rsync # 指定的模块传输文件时所用的用户身份 gid = rsync # 指定的site模块传输文件时所用的用户组身份 port=873 # 默认端口 use chroot = no # 默认为true,修改为no,增加对目录文件软连接的备份 max connections = 200 # 指定最大并发连接数以保护服务器,超过限制的连接请求将被告知随后再试。默认值为 0,即没有限制。 timeout = 300 # 服务器会话的超时时间 pid file = /var/run/rsyncd.pid # 进程启动后,进程号存放路径 lock file = /var/run/rsyncd.lock # 服务启动、停止会用到锁文件 log file = /var/log/rsyncd.log # 指定日志文件的路径 Log fromat = %h %o %f %l %b # 指定日志记录的格式 motd file = /etc/rsyncd.motd # 登陆消息提示文件,可以不配置。默认为空。 [test] # 模块名称,名称可以任意写,不过一般是以路径命名,最好见名意 Comment = test # 模块信息描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义 path=/test/ # 指定供备份的目录路径,必须指定该参数。该目录路径是rsync服务端的一个路径,提供给客户端上传或下载 ignore erros # 忽略错误 read only = false # 设定是否允许客户上载文件。若为 true 任何上载请求均会失败,若为 false 且客户端拥有服务器目录读写权限则可以上载。默认值为 true 。 write only 设定是否允许客户下载文件。若为 true 任何下载请求均会失败,默认值为 false 。 list = false # 设定当客户请求可以使用的模块列表时,是否列出该模块。若为 false,则创建隐藏的模块。默认值为 true hosts allow=192.168.137.0/24 # 指定允许客户连接的 IP 地址。可以为单个 IP 地址或整个网段。多个 IP 或网段需要以空格隔开。默认是允许所有主机连接。 hosts deny=* # 指定拒绝连接的客户IP地址,设置方式和hosts allow相同。 Dont commpress # 指定不进行压缩处理即可传输的文件,默认值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz auth users = rsync_backup # 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户不一定是客户端存在的用户。如果"auth users"被设置,那么客户端发出对该模块的连接请求时,需要对用户身份进行验证。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块 ( 也就是匿名方式 )。 secrets file = /etc/rsync.password # 虚拟用户的密码文件 exclude = common/ # 用来指定多个由空格隔开的多个文件或目录 ( 相对路径 ),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 --exclude 参数。一个模块只能指定一个 exclude 选项。但是需要注意的一点是该选项有一定的安全性问题,客户端很有可能绕过 exclude 列表,如果希望确保特定的文件不能被访问,那就最好结合 uid/gid 选项一起使用。 pre-xfer exec, post-xfer exec # 设置可在文件传输前/后执行的命令。若在文件传输前执行的命令失败,则取消本次传输操作。
环境 CentOS6.5 x86_64位 采用最小化安装,系统经过了基本优化 selinux为关闭状态,iptables为无限制模式 源码包存放位置:/root 服务器架构: rsync-server:172.16.100.1 rsync-client:172.16.100.2
[root@rsync-server ~]# yum install rsync -y [root@rsync-server ~]# vim /etc/rsyncd.conf uid = root gid = root use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 172.16.100.0/24 hosts deny = * auth users = rsync_backup secrets file = /etc/rsync.password [sunsky] path = /test
[root@rsync-server ~]# touch /etc/rsync.passord [root@rsync-server ~]# chmod 600 /etc/rsyncd.password [root@rsync-server ~]# vim rsyncd.password #里面记录条目的格式为“用户 : 密码” rsync_backup:redhat
[root@rsync-server ~]# touch /etc/rsyncd.motd [root@rsync-server ~]# vim rsyncd.conf ============================ This is Critical Data Server =============================
[root@rsync-server ~]# mkdir /test [root@rsync-server ~]# chown root.root /test #更改目录的权限为rsyncd.conf中uid和gid指定属主和属組
[root@rsync-server ~]# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf #注意如果你的rsyncd.conf文件在/etc/目录下,就不需要再用--config去指定了。--daemon是以守护进程的方式启动
[root@rsync-server ~]# pkill rsync #关闭rsync服务 [root@rsync-server ~]# rsync --daemon #启动rsync服务 [root@rsync-server ~]# ps -ef | grep rsync #检查是否启动
[root@rsync-server ~]# yum install xinetd #安装xinetd [root@rsync-server ~]# vim /etc/xinetd.d/rsync disable= no # 默认为yes,需要将他设置为no,让xinetd接管rsync服务。注意,如果你使用手动的方式,这里就修改为no,即拒绝xinetd接管rsync服务。 [root@rsync-server ~]# /etc/init.d/xinetd start # 启动xinetd服务,则默认会以守护进程方式启动rsync 服务
[root@rsync-server ~]# netstat -lntup |grep 873 [root@rsync-server test]# netstat -lntup |grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 10234/rsync tcp 0 0 :::873 :::* LISTEN 10234/rsync
[root@rsync-server ~]# lsof -i tcp:873 [root@a test]# lsof -i tcp:873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 10234 root 3u IPv4 93239 0t0 TCP *:rsync (LISTEN) rsync 10234 root 5u IPv6 93240 0t0 TCP *:rsync (LISTEN)
[root@rsync-server ~]# rsync --daemon # daemon 表示以守护进程的方式启动rsync服务 常用启动参数: --daemon # 表示以守护进程的方式启动rsync服务 --address # 绑定指定ip地址提供服务,即服务器是多网卡模式或多虚拟IP模式,需要指定某个固定ip提供服务 --config=FILE # 更改配置文件路径,而不去使用默认的/etc/rsyncd.conf --port=PORT # 更改其它端口提供服务,而不去使用模式的873端口。
ot@rsync-server ~]# yum install rsync -y
[ro[root@rsync-server ~]# vim /etc/rsync.password # 该文件里面仅存放密码即可 redhat [root@rsync-server ~]# cat /etc/rsync.password # 配置完毕之后检查 [root@rsync-server ~]# ll /etc/rsync.password # 配置完毕之后检查
拉取:①rsync [OPTION...] [USER@]HOST::SRC... [DEST] ②rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] 推送:①rsync [OPTION...] SRC... [USER@]HOST:DEST ②rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync -avzP rsync_backup@172.16.100.1::sunsky /test/ --password-file=/etc/rsync.password
rsync -avzP /test rsync_backup@172.16.100.1::sunsky --password-file=/etc/rsync.password
rsync -avzP rsync://rsync_backup@172.16.100.1:/sunsky/ /test/ --password-file=/etc/rsync.password
rsync -avzP /test/ rsync://resync_backup@192.168.1.111:/sunsky/ --password-file=/etc/rsync.password
[root@rsync-server ~]# crontab -e # Automatic synchronization log files at 1 a.m * 1 * * * /usr/bin/rsync-avzP rsync_nobody@172.16.100.1::weblog /data/log/ --password-file=/etc/rsyncd.passwd > /dev/null 2>&1 # Automatic distribution site file points every second of every day * * * * * /usr/bin/rsync-avzP --delete rsync_nobody@172.16.100.1::webdata /data/web/ --password-file=/etc/rsyncd.passwd > /dev/null 2>&1
[root@rsync-server ~]# ls /test/ #查看rsync服务端,sunsky模块下的/test目录的文件列表 e [root@rsync-client ~]# ls /test/ #查看rsync客户端本地/test目录的文件列表 a b c d
[root@rsync-client ~]# rsync -avzP --delete rsync_backup@172.16.100.1::sunsky /test/ --password-file=/etc/rsync.passwordreceiving incremental file listdeleting ddeleting cdeleting bdeleting a./e 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2) sent 86 bytes received 143 bytes 458.00 bytes/sectotal size is 0 speedup is 0.00[root@rsync-client ~]# ls /test/e [root@rsync-server ~]# ls /test/e
[root@rsync-client ~]# rsync -avzP --delete /test/ rsync_backup@172.16.100.1::sunsky --password-file=/etc/rsync.passwordsending incremental file list./deleting ea 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=3/5)b 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=2/5)c 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=1/5)d 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=0/5) sent 201 bytes received 87 bytes 576.00 bytes/sectotal size is 0 speedup is 0.00[root@rsync-client ~]# ls /test/a b c d[root@rsync-server ~]# ls /test/a b c d
[root@rsync-server ~]# tree /test//test/0 directories, 0 files[root@rsync-client ~]# tree /test//test/├── a├── b├── c.txt├── x│ └── xxx.txt└── x.txt2 directories, 4 files
[root@rsync-client ~]# rsync -avz --exclude=*.txt /test/ root@172.16.100.1:/test/root@172.16.100.1's password: sending incremental file list./abx/sent 154 bytes received 57 bytes 60.29 bytes/sectotal size is 0 speedup is 0.00
[root@rsync-server ~]# tree /test//test/├── a├── b└── x1 directory, 2 files
[root@rsync-client ~]# cat /tmp/exclude x *.txt [root@rsync-client ~]# rsync -avz --exclude-from=/tmp/exclude /test/ root@172.16.100.1:/test/ root@172.16.100.1's password: sending incremental file list ./ a b xx/ sent 151 bytes received 57 bytes 59.43 bytes/sec total size is 0 speedup is 0.00
[root@rsync-server ~]# tree /test/ /test/ ├── a ├── b └── xx 1 directory, 2 files
转自:http://nolinux.blog.51cto.com/4824967/1431426
原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/1995