您的位置 首页 java

Linux高性能文件传输rsync命令

rsync(远程同步,Remote Sync)是一种在系统中或两个系统之间复制文件和目录的同步工具。rsync 的一个最大的优点,就是它只复制更改的文件,因而可以减少 CPU 消耗,传输效率更高,在复制文件时节省带宽和时间,如果是大批量文件传输建议使用 rsync命令。

scp和rsync命令区别:

  1. scp 基于 ssh 协议传输更安全
  2. scp又称为全量复制,每次复制都会复制所有文件。
  3. rsync 第一次是把所有文件同步过去,当文件修改后,只把修改的文件同步过去

在 Ubuntu 和 Debian 安装,如果 redhat 红帽系统只需要把apt修改成yum即可

 apt install  rsync   

rsync 全部参数

-v –verbose 详细模式输出
-q –quiet 精简输出模式
-c –checksum 打开校验开关,强制对文件传输进行校验
-a –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于 -rlptgoD
-r –recursive 对子目录以递归模式处理
-R –relative 使用 相对路径 信息
-H, –hard-links 保留硬链结
-p, –perms 保持文件权
-o, –owner 保持文件属主信息
-g, –group 保持文件属组信息
-D, –devices 保持设备文件信息
-t, –times 保持文件时间信息
-S, — sparse 对稀疏文件进行特殊处理以节省 DST 的空间
-n, –dry-run 现实哪些文件将被传输
-W, –whole-file 拷贝文件,不进行增量检测
-x, –one-file-system 不要跨越文件系统边界
-B, –block-size=SIZE 检验算法使用的块尺寸,默认是 700 字节
–delete 删除那些 DST 中 SRC 没有的文件
–delete-excluded 同样删除接收端那些被该选项指定排除的文件
–delete-after 传输结束以后再删除
–ignore-errors 及时出现 IO 错误也进行删除
–max-delete=NUM 最多删除 NUM 个文件
partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
–force 强制删除目录,即使不为空
–numeric-ids 不将数字的用户和组 ID 匹配为用户名和组名
–timeout=TIME IP 超时时间,单位为秒
-I, –ignore-times 不跳过那些有同样的时间和长度的文件
–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为 0
-T –temp-dir=DIR 在 DIR 中创建临时文件
–compare-dest=DIR 同样比较 DIR 中的文件来决定是否需要备份
-P 等同于 –partial
–progress 显示备份过程
-z, — compress 对备份的文件在传输时进行压缩处理
–exclude=PATTERN 指定排除不需要传输的文件模式
–include=PATTERN 指定不排除而需要传输的文件模式
–exclude-from=FILE 排除 FILE 中指定模式的文件
–include-from=FILE 不排除 FILE 指定模式匹配的文件
–version 打印版本信息

本地文件同步

例如:同步aa文件下面的文件到bb文件夹,默认是单向同步,如果需要双向同步添加 –delete参数

 rsync -avzh aa/ bb/  
Linux高性能文件传输rsync命令

远程传输文件

例如:需要把bb目录复制到某一台服务器的/opt目录,想要注意一点⚠️bb加/表示只同步bb目录下的我就,不加表示同步bb整合目录包含bb夹,下面的截图可以看出两个的区别。

 rsync -avzh bb  root @172.17.70.3:/opt/  
Linux高性能文件传输rsync命令

包含和排除需要传输的文件

如果你在传输的时候需要哪些文件或者不需要哪些文件可以根据 –include 或者 –exclude参数,如果只想要.java文件不想要 . class文件 可以使用下面命令

 rsync -avzh bb root@172.17.70.3:/opt/ --incloud=*.java  --exclude=*.class  

断点续传

如果文件传输不完整,可以使用 rsync 命令保留不完整的下载,以便在下一次发出相同命令时继续传输。

要恢复传输,使用 — append 选项:

 rsync -avzh  --append bb root@172.17.70.3:/opt/ --incloud=*.java  --exclude=*.class  

rsync 使用非标准端口

比如现在向机器127.0.0.8传送文件,但此时yunst的 ssh 端口已经不是默认的 22 端口

 rsync -avz -e "ssh -p $port" /opt/src/ root@127.0.0.8:/opt/  

文章来源:智云一二三科技

文章标题:Linux高性能文件传输rsync命令

文章地址:https://www.zhihuclub.com/189739.shtml

关于作者: 智云科技

热门文章

网站地图