Linux好用命令之rsync命令

艺帆风顺 发布于 2025-04-03 17 次阅读


针对实战使用进行讲解分析,不简简单单罗列命令参数了事。

1,构建使用。

静态文件部署,一般会用到此命令,完整命令如下:

rsync -avz --progress -e 'ssh -p 34222' --exclude='Jenkinsfile' --delete ${WORKSPACE}/  root@192.168.0.1:/data/test/
  • -a:--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

  • -v:输出详细过程

  • -z:对正在备份的文件进行压缩处理

  • -r:对子目录以递归模式处理

  • -l:保留软连接

  • -p:保持文件权限

  • -t:保持文件时间信息

  • -g:保持文件属组信息

  • -o:保持文件属主信息

  • -D:保持设备文件信息

  • -e:–rsh=command 指定使用rsh、ssh方式进行数据同步,一般使用ssh

  • exclude: 排除某文件的同步,可以多个。

  • --delete:删除那些DST中SRC没有的文件。

  • --progress:显示每个文件传输的进度。知道是否有大型文件正在备份可能是有用的。

2,其他注意。

  • 将dirA的所有文件同步到dirB内,并删除dirB内多余的文件

$ rsync -avz --delete dirA/ dirB/ 
  • 源目录和目标目录结构一定要一致!!不能是dirA/* dirB/ 或者dirA/ dirB/* 或者 dirA/* dirB/*,如果不遵守,那么就不会删除。

  • 将dirA的所有文件同步到dirB,但是在dirB内除了fileB3.txt这个文件不删之外,其他的都删除

$ rsync -avz --delete --exclude "fileB3.txt" dirA/ dirB/

将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内

$ rsync -avz --exclude="fileA1.txt" --exclude="fileA2.txt" dirA/ dirB/

将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内,并且在dirB目录内删除多余的文件

$ rsync -avz --exclude="fileA1.txt" --exclude="fileA2.txt" --delete dirA/ dirB/

将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内,并且在dirB目录内删除多余的文件,同时,如果dirB内有fileA2.txt和fileA1.txt这两个被排除同步的文件,仍然将其删除

$ rsync -avz --exclude="fileA1.txt" --exclude="fileA2.txt" --delete-excluded dirA/ dirB/
版权声明:本文内容来自个人博客:二丫讲梵,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://wiki.eryajf.net/pages/024c6a/如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者:二丫讲梵的创作,Powered by 二丫讲梵。本文已获原作者授权发布。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。