QQ:234170038 新手入门,希望和大家一起进步
rsync的工作方式
常见的3种方式
1、local(单个主机之间本地传输数据)类似cp命令
2、借助rcp、ssh等通道来传输数据(此时类似于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
第二种:借助rcp、ssh等通道来传输数据(此时类似于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<===只读为假,意思就是可读可写 相当于NFS的rw
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
1、rsync --version 查看rsync的版本
2、rsync --daemon 启动rsync的守护进程,学完shell之后可以写脚本让rsync在/etc/init.d/rsyncd启动
3、rsync 的端口是873
4、必须先创建出来用户 rsync useradd rsync -s /sbin/nologin <==不需要登录
5、需要共享的目录是oldboy 必须先创建出来
6、然后更改属主和数组chown -R rsync.rsync /oldboy
7、echo "rsync_backup:121226" > /etc/rsync.password <===把密码echo到文件中
8、chmod 600 /etc/rsync.password <===由于有密码不安全,需要更改权限600或400
注意: 防火墙要关掉 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限速 单位k 整数就可以 比如100
###########################################################################
进行测试:
PULL测试
方法一: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync -avz rsync_backup@192.168.0.111::oldboy /date1
注意事项:
1、-avz不要省略
2、IP地址后面是双冒号
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