QQ:234170038 新手入门,希望和大家一起进步

rsync的工作方式

常见的3种方式

1、local(单个主机之间本地传输数据)类似cp命令

2、借助rcpssh等通道来传输数据(此时类似于scp命令)

3、以守护进程(socket)的方式传输数据,此时是rsync自身的重要功能

 

第一种:local(单个主机之间本地传输数据)类似cp命令 直接本地同步

rsync 【选项】源文件路径 目标文件路径  (类似于cp命令,也可以改名字)

[root@NFSservice01 tmp]# rsync -avz /etc/hosts /tmp/

生产环境  -avz:最常见的应用(保持属性同步) 或者 -vzrtopg

-v:--verbose 详细信息输出,输出是的进度等相关信息

-z:compress 传输时进行压缩以提高传输效率,--compress-level=NUM 按级别进行压

-a:归档模式,表示以递归方式传输文件,并保持文件的所有属性信息,等于=rtopgDl

--bwlimit=RATE   limit socket I/O bandwidth   <==限速  --bwlimit=100

第二种:借助rcpssh等通道来传输数据(此时类似于scp命令)

删除功能

[root@Clinet02 home]# rsync -r --delete user888/ qq/ 

解析: rsync -r --delete 删除命令 就是把user888里面的内容同步到qq/里面去,假如user888里面是空的,那么就把qq/里面同步空了.  目录的权限也很重要.

推送功能

[user888@NFSservice01 ~]$ rsync -avz /etc/hosts -e 'ssh -p22' user888@192.168.0.116:~

解析: rsync 接文件 -e指定管道ssh -p22指定的管道是ssh -p22 端口号22 后面是接收服务器的IP地址

简写: rsync -avz  /etc/fstab -e 'ssh -p22' 192.168.0.114:~  也可以 

拉回功能

[user888@NFSservice01 tmp]$ rsync -avz -e 'ssh -p22' 192.168.0.115:~/inittab /tmp/ 也可以

解析把家目录下的inittab 拉回到/tmp 下面

[user888@NFSservice01 home]$ rsync -avz 192.168.0.114:~/inittab -e 'ssh -p22' .

解析:就是把推送和拉回换一下位置 拉到当前目录,也哭指定目录,只要权限允许

 rsync 守护进程的方式传输数据

重点: *****第三种:以守护进程(socket)的方式传输数据,此时是rsync自身的重要功能

↓↓↓↓↓↓↓↓↓↓服务端的配置 如下↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

需要客户端与服务端   配置文件路径 /etc/rsyncd.conf 默认不存在的 需要创建

#rsync_config_______________start           <===注释  

#created by oldboy 15:01 2007-6-5             <===注释

#QQ 31333741 blog:http://oldboy.blog.51cto.com<===注释

##rsyncd.conf start##      <===注释

uid = rsync               <=== uid gid 就像NFS默认的uid65534 nfsnobody一样

gid = rsync <=== uid gid 就像NFS默认的uid65534 nfsnobody一样

use chroot = no<===安全性的设置,由于是局域网不考虑这个问题

max connections = 200<===同时连接客户端的最大量 200已经很大了

timeout = 300<===客户端连接超时时间  单位秒

pid file = /var/run/rsyncd.pid <===进程号所在的文件,好处是将来处理进程的时候不用ps去查找了,直接杀这个进程就可以了

lock file = /var/run/rsync.lock  <===一般rsync在传输数据的时候,大家都在传,可能会冲突,所以锁住,等你传完别人在传

log file = /var/log/rsyncd.log <===日志文件

[oldboy]<===模块 需要中括号括起来,尽量跟下面的PATH一致,以为内以后有很多的共享目录模块,容易混淆

path = /oldboy/<===共享目录的路径

ignore errors<===在传输中遇到错误就忽略了

read only = false<===只读为假,意思就是可读可写 相当于NFSrw

list = false<===列表   不允许列表

hosts allow = 10.0.0.0/24<===允许的主机,类似于nfs前面的网段一样

hosts deny = 0.0.0.0/32<===拒绝  没有用户的验证

auth users = rsync_backup<===虚拟用户 

secrets file = /etc/rsync.password<=== 虚拟用户的密码文件,局域网传输不需要密码

#rsync_config_______________end

1rsync --version 查看rsync的版本

2rsync --daemon 启动rsync的守护进程,学完shell之后可以写脚本让rsync/etc/init.d/rsyncd启动

3rsync 的端口是873

4、必须先创建出来用户 rsync  useradd rsync -s /sbin/nologin <==不需要登录

5、需要共享的目录是oldboy  必须先创建出来

6、然后更改属主和数组chown -R rsync.rsync /oldboy

7echo "rsync_backup:121226" > /etc/rsync.password        <===把密码echo到文件中

8chmod 600 /etc/rsync.password   <===由于有密码不安全,需要更改权限600400

注意防火墙要关掉 selinux要关掉 #getenforce 查看selinux状态

##########################服务端配置完毕↑ ↑ ↑



 ↓↓↓↓↓↓↓↓↓↓客户端的配置 如下↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

[root@Clinet02 ~]# echo "121226" > /etc/rsync.password   <=== 复制这条,去掉用户名          [root@Clinet02 ~]# chmod 600 /etc/rsync.password<===更改权限为600

/etc/rsync.password的路径是可以改变的

密码文件和服务端的没有任何关系,密码要和服务端的一样

客户端超时的参数   --timeout=SECONDS[]       set I/O timeout in seconds

同步限速的参数   --bwlimit=RATE限速 单位整数就可以 比如100

###########################################################################

进行测试:

PULL测试

方法一:  rsync [OPTION...] [USER@]HOST::SRC... [DEST]

rsync -avz rsync_backup@192.168.0.111::oldboy /date1

注意事项:

 1-avz不要省略

 2IP地址后面是双冒号

3、双冒号后面跟的是服务端共享的文件目录,直接写目录名字即可

4、总提示需要密码 只需要在命令的后面加上--password-file=/etc/rsync.passeword即可

方法二: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

[root@Clinet02 ~]# rsync -avz rsync://rsync_backup@192.168.0.111/oldboy /date1

总提示要密码 可以这样写

rsync -avz rsync://rsync_backup@192.168.0.111/oldboy /date1 --password-file=/etc/rsync.password 

PUSH测试

方法一:rsync [OPTION...] SRC... [USER@]HOST::DEST

rsync -avz 2222/ rsync_backup@192.168.0.111::oldboy

注意事项:

要是想推送2222这个目录 那就写/2222

要是想推送里面的内容不推送目录,那就写/2222/

方法二: rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

 rsync -avz jjjj rsync://rsync_backup@192.168.0.111/oldboy --password-file=/etc/rsync.password