rsync文件同步工具/通过ssh同步/通过服务同步

rsync用于文件在本机或者多个机器间同步,与cp命令类型,但区别在于:
1.cp 1.txt /tmp/2.txt
2.当1.txt文件内容有变化的时候,同步需要再执行一次cp 覆盖 2.txt
rsync与cp不同的是,cp会复制文件中的所有内容,而rsync只同步1.txt中变更的信息到2.txt文件中,在操作大文件时rsync的优势就会体现出来

在本机上复制文件:rsync -av

[root@linux ~]# rsync -av test.txt /tmp/testbak
sending incremental file list
test.txt

sent 119 bytes  received 35 bytes  308.00 bytes/sec
total size is 25  speedup is 0.16

通过ssh同步:(源文件机器和目标文件机器都要安装rsync)

复制文件到指定机器上: 加user@host:

[root@linux ~]# rsync -av test.txt root@192.168.234.130:/tmp/test_bak

从指定机器上复制文件到本机:

[root@linux ~]# rsync -av root@192.168.234.130:/root/testfile.txt  /tmp

远程机器ssh端口不是默认22端口时,加 -e "ssh -p port"参数指定端口:

[root@linux ~]# rsync -av -e "ssh -p 22" test.txt root@192.168.234.130:/tmp/testlog.bak

rsync常用参数:

-a 参数:包含-rtplgoD参数
-r 参数:同步目录时使用(类似cp -r )
-v 参数:可视化,同步时输出一些信息
-l 参数:保留软连接
-L 参数:同步时将软连接文件当普通文件处理
-p 参数:保持文件权限
-o 参数:保持文件属主
-g 参数:保持文件属组
-t 参数:保持时间属性(atime,ctime,mtime)
-D 参数:保持设备文件信息
- -delete:删除DEST中SRC没有的文件(SRC:源文件或目录,DEST:目标文件或目录)
- -exclude:过滤指定文件,如- -exclude “logs” 会把名称包含logs的文件或目录排除,不同步
-P 参数:显示同步过程,比 -v更详细
-u 参数:如果DEST中的文件比SRC中的新(根据mtime判断),则不同步
-z 参数:同步时压缩(小文件看不到明显变化,同步大文件时使用,加快传输速度)

通过服务的方式同步:
在服务器上编辑配置文件/etc/rsyncd.conf,添加如下内容:

port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.234.128
[rsync_test]
path=/tmp/rsync
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=user01
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.234.130 192.168.234.129 192.168.1.0/24

rsyncd.conf 配置文件详解:
port:指定rsync服务的端口,默认873,当端口不是873时,使用rsync需加上 - -prot指定端口
log file:指定日志文件
pid file:指定pid文件
address:指定rsync服务IP
[]:指定模块名,名称和模块内容根据实际需求自定义
path:指定数据存放的路径
use chroot:默认为true,rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限,并且不能备份指向 path 外部的符号连接所指向的目录文件,如目标文件中包含软连接文件,建议设置为false
max connections:指定最大的连接数,默认是0,即没有限制
read only:是否只读,如果为true,则不能上传文件到该模块指定的路径下
write only:是否只写,如果为true,则不能在该模块的指定目录下下载文件
list:表示当用户使用rsync查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏
uid/gid:指定传输文件时以哪个用户/组的身份传输,如果指定用户没有path指定目录的权限,传输时会报错
hosts allow:定义允许连接的IP或者网段

传输时指定用户名和密码:

  1. auth users:指定传输时要使用的用户名
  2. secrets file:指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是600。格式:用户名:密码(user01:123456)
  3. 使用时需在IP地址前加上指定的用户名然后验证密码:
rsync -av /tmp/testfile/ user01@192.168.234.130::rsync_test/

如需免密验证,可以在使用的客户端添加一个密码文件:

echo '123456' > /etc/pass_test.txt

修改文件权限:

chmod 600 /etc/pass_test.txt

使用时加上 - -password-file指定该文件即可:

rsync -av /tmp/testfile/ --password-file=/etc/pass_test.txt user01@192.168.234.130::rsync_test/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值