开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天,点击查看活动详情
一、命令详解
1.1【功能说明】
rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据镜像同步备份的优工具。rsync适用于Unix/Linux/Windows等多种操作系统平台。
1.2【语法格式】
rsync命令有三种常见模式,具体如下:
1、本地模式
rsync [option] [SRC] [DEST]
2、通过远程Shell访问模式
# 拉取
rsync [option] [USER@]HOST:SRC [DEST]
# 推送
rsync [option] [SRC] [USER@]HOST:DEST
3、rsync守护进程模式
# 拉取
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
1.3【选项说明】
参数选项
-
-v, --verbose输出传输时的进度等信息 -
-z, --compress传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩 -
-a, --archive以递归方式传输文件,并保持所有文件的属性,相当于-rtopgDl -
-r, --recursive小写r,对子目录以递归模式,即目录下的所有目录都以同样的模式传输 -
-t, --times保持文件的时间信息 -
-o, --owner保持文件的属主信息 -
-p, --perms保持文件的权限 -
-g, --group保持文件的属组信息 -
-P, --progress显示同步的过程及传输时的进度等信息 -
-D, --devices保持设备文件信息 -
-l, --links保留软链接 -
-e, --rsh=COMMAND使用的信道协议,指定替代rsh的shell程序,例如:ssh -
-n测试选项,模拟执行 -
--exclude-PATTERN指定排除不需要传输的文件模式 -
--exclude-from-FILE从文本文件读取需要排除的文件列表 -
--bwlimit-KBPS限制传输速度 -
--delete使目标目录内容和源保持目录一致,删除不同的文件
二、使用范例
2.1 本地复制的例子
rsync -av /etc/hosts /tmp
# 相对于cp,rsync可以实现增量复制
2.2 删除文件的例子
一个目录下有几十万个文件,用什么方式可以最快删除所有文件?
# 创建一个空目录
mkdir /null
# 选项--delete使tmp目录内容和空目录保持一致,不同的文件及目录将会被删除
# 即null里有什么内容,tmp里就有什么内容,null里没有的,tmp里有的就必须删除
# null目录为空,所以此命令会删除/tmp目录下的所有内容
# 注意源目录/null/ 末尾要加斜杠
rsync -av --delete /null/ /tmp/
2.3 拉取推送文件及目录
rsync -av 192.168.2.123:/tmp/ /tmp/
说明:
-
与scp命令复制的结果进行对比可发现,使用rsync复制时,重复执行复制直至目录下文件相同就不再进行复制了、
2.4 利用ssh隧道模式拉取推送文件及目录
rsync -av -e 'ssh -p 22' /tmp/ 192.168.2.123:/tmp/
rsync -av -e 'ssh -p 22' 192.168.2.123:/tmp/ /tmp/
前面范例使用rsync同步数据都是明文传输的,在要求保障数据案例的场景下,可以使用-e选项借助ssh隧道进行加密传输,-p是SSH命令的选项,指定SSH传输的端口号为22,第一条命令的结果是将本地/tmp目录下的内容通过ssh加密隧道推送数据到192.168.2.123主机的/tmp目录下。同理第二条命令可以从192.168.2.123主机的/tmp目录通过ssh加密隧道将数据拉取到本地/tmp目录下。
三、扩展知识
3.1 源地址带与不带斜线的区别
# 准备数据
mkdir -p /data1/{test1,test2} /data2 /data3
# 带斜杠,源目录末尾有斜杠,就会复制目录内的内容,而不是复制目录本身
rsync -av /data1/ /data2
# 不带斜杠,源目录没有斜线,则会复制目录本身及目录下的内容
rsync -av /data1 /data3
tree data2
tree data3
# 注:目标目录的末尾有没有斜杠都不影响最终结果
四、命令总结
- 2022/12/18 初识rsync命令还是当时用scp复制时想要排除某些文件搜出来的