W8-C2-0514

5月14日任务
10.28 rsync工具介绍
10.29/10.30 rsync常用选项
10.31 rsync通过ssh同步

1. rsync工具介绍

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
从字面上的意思你可以理解为remote sync (远程同步)这样可以让你理解的更深刻一些。Rsync不仅可以远程同步数据(类似于scp [1]),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉。如果你的linux没有rsync命令请使用 yum install -y rsync 安装。

2. 用法

  Local: rsync [OPTION...] SRC... [DEST]
  Access via remote shell:
    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
  Access via rsync daemon:
    Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
          rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
          rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

rsync -av /etc/passwd /tmp/1.txt 本机
rsync -av /tmp/1.txt root@192.168.192.128:/tmp/2.txt 远程
USER可省略, 默认以当前用户

3. 常用选项

-a: 包含-rtplgoD
-r: 同步目录时要加, 类似cp的-r选项.
-R: 表示相对路径, 是以目标目录为根的
-v: 同步时显示一些信息
-l: 保留软链接
-L: 同步软链接时也同步源文件
-p: 保持文件的权限属性
-o: 保持文件的属主
-g: 保持文件的属组
-D: 保持设备文件信息
-t: 保持文件的mtime属性. 建议任何时候都加上”-t”,否则目标文件mtime会设置为系统时间,导致下次更新检查出mtime不同从而导致增量传输无效
--delete: 删除DEST中SRC没有的文件
--exclude: 过滤指定文件, 如--exclude "logs"会过滤包含logs的文件或目录, 不同步. 支持通配和写多个
-P: 显示同步过程, 如速率, 比-v更详细
-u: 如DEST中文件比SRC新, 则不同步
-z: 传输时压缩
同步时目录最后全部加/
源路径如果是目录的话,带/和不带/是不一样的
不带/表示整个目录包括目录本身, 带/表示目录中的文件,不包括目录本身。
rsync /etc /tmp: 会在/tmp目录下创建etc目录
rsync /etc/ /tmp: 源路径/etc/中的所有文件都直接放在/tmp目录下
如果源路径较长,但只想在目标主机上保留一部分目录结构,如要拷贝/var/log/anaconda/到/tmp下,但只想在/tmp下保留从log开始的目录,如何操作?使用一个点代表相对路径的起始位置即可,也就是将长目录进行划分。
rsync -R -r /var/./log/anaconda /tmp 将在目标上创建/tmp/log/anaconda/

4. 通过ssh同步

rsync -avP /etc/passwd 192.168.192.133:/tmp/aming.txt
rsync -avP -e "ssh -p 2211" /etc/passwd 192.168.192.133:/tmp/aming.txt -e 指定端口

5. 通过服务同步

vim /etc/rsyncd.conf 需先编辑配置文件
rsync --daemon 启动服务

格式

rsync -av test1/ 192.168.192.133::module/dir/
rsync -av /tmp/aming.txt 192.168.192.133::test/aming-02.txt
rsync -avLP --port 8730 /tmp/aming.txt 192.168.192.133::test/aming-02.txt 指定端口
rsync --port 8730 192.168.192.133:: 列出服务器模块

rsyncd.conf样例

port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.133.130
[test]
path=/tmp/rsync #指定路径
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=test
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.133.132 1.1.1.1 2.2.2.2 192.168.133.0/24

6. rsyncd.conf 配置文件详解

port:指定启动rsyncd服务的端口,默认是873端口
log file:指定日志文件
pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等进程管理操作。
address:指定启动rsyncd服务的IP。如机器有多个IP,可指定由其中一个启动rsyncd服务,如不指定该参数,默认在全部IP上启动。
[]:指定模块名,内容自定义。
path:指定数据存放路径。
use chroot true|false:表示在传输文件前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如数据中有软连接文件,建议设成false。
max connections:指定最大的连接数,默认是0,即没有限制。
read only true|false:如果为true,则不能上传到该模块指定的路径下。
list:表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏。
uid/gid:指定传输文件时以哪个用户/组的身份传输。
auth users:指定传输时要使用的用户名。
secrets file:指定密码文件,该参数连同上面的参数如不指定,则不使用密码验证。注意该密码文件的权限一定要是600。格式:用户名:密码. 当设置了auth users和secrets file后,客户端连服务端也需要用用户名密码了,若想在命令行中带上密码,可以设定一个密码文件 rsync -avL test@192.168.133.130::test/test1/ /tmp/test8/ --password-file=/etc/pass, 其中/etc/pass内容只写密码即可,权限要改为600
hosts allow:表示被允许连接该模块的主机,可以是IP或网段,多个用空格隔开。

未经允许不得转载:外贸SOHO笔记 » W8-C2-0514

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下作者~

支付宝扫一扫打赏

微信扫一扫打赏