linux 命令 -- rsync
linux 命令 rsync
资料来源:
https://www.ruanyifeng.com/blog/2020/08/rsync.html
更新
1
2021.08.12 初始
导语
一直对 unix 及 unix 诞生的贝尔实验室印象比较模糊,只晓得 unix 极大影响了之后的操作系统,当然主要是 linux.
最近在阅读的一本书 unix传奇 才意识到日常接触到各种名词之间的联系.unix linux bsd posix awk sed …
unix 哲学之一是程序应该只关注一个目标,并尽可能把它做好.伴随 unix 诞生的各类命令可以算是这条哲学的最佳实践了,自诞生到现在的几十年基本的命令几乎没有太大变化.
突然很想完整了解这些命令和命令背后的故事.于是开新坑了.
本人水平远远不够到完整记述命令起源的地步,因此更多是使用的介绍.
如果对科学史不反感,推荐 unix传奇 阅读体验是一气呵成.
ps: 这个新坑,我希望能加快更新频率,专注在那些自己使用非常多的场景,可能并不是完整的命令介绍.
rsync
rsync
- 增量式同步文件/文件夹
- 支持通过 ssh 传输
rsync -xx source* destinaton
- xx 是定制化命令
- 将所有
source*
都同步到destination/source*
. 如果只需要同步source*
下所有文件,写成source*/
. - destination 不存在会自动创建
rsync 参数
-r: 递归同步,只同步文件本身.使用不多
-a: 递归同步,包括同步元数据(文件创建时间.修改时间等).
-n: 不确定那些文件会被同步,输出命令模拟结果.
-delete: rsync 默认并不删除 destination 下任何文件,不会将两个文件夹完全同步.delete 会对 destination 执行删除操作保证完全镜像.
所以常用的形式是
1 | rsync -anv source destination #模拟 |
rsync 的对比两个文件是不是有差异,是看 文件的修改时间和文件的大小.
日常使用
同步两个文件夹,但是文件差异只比较文件大小.我本地环境中同步 docker 配置居多,一旦涉及到 docker 内挂载的文件夹,修改时间就失去比较意义了.
1 | rsync -anv --size-only source destination #模拟 |
ps: rsync 还有一种基于基准目录对比同步的方式,详情见阮老师的 rsync 用法教程