rsync的配置和使用
写在前面:
最近有次面试被问到了这个工具(ssh和rsync的区别),表示个人不喜欢这样的问题,一个都知道都用过,说区别的话,不太清楚。面试官说,rsync可以做增量同步。(以为会给个新鲜的答案,这个……有点失望)。
面试问工具,尤其是这种“一次性工具”,表示意义不大(起码我不会面试别人这样的问题),一次知道怎么用,后面直接抄就行了,而且也不见得有多少公司会用。
就拿代码管理工具来说,有公司用Gitlab,有公司用Gerrit,由于这两个工具都是基于Git的,所以问Git方面的要比单独问题Gerrit或Gitlab要好;而且这两个工具都能作持续集成工具,所以也可以问合代码的流程。
参考来源:man rsync
rsync:一种快速、通用的远程(和本地)文件复制工具。
基本用法
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)
如果只有一个SRC参数而没有DEST参数的话,只会列出源文件,而不是复制。
描述
rsync是一种快速且用途广泛的文件复制工具。它可以在本地复制,也可以通过任何远程shell从另一台主机复制,或者从远程rsync服务复制。它提供了大量的选项来控制其行为的各个方面,并允许对要复制的文件集进行非常灵活的规范。它以其delta传输算法而闻名,该算法只发送源文件和目标中现有文件之间的差异,从而减少了通过网络发送的数据量。rsync广泛用于备份和镜像,并作为一种改进的复制命令用于日常使用。
rsync使用“快速检查”算法(默认情况下)查找需要传输的文件,该算法查找大小或上次修改时间发生变化的文件。当快速检查指示不需要更新文件的数据时,将直接在目标文件上对其他保留的属性(根据选项的要求)进行任何更改。
支持功能:
- support for copying links, devices, owners, groups, and permissions
- exclude and exclude-from options similar to GNU tar
- a CVS exclude mode for ignoring the same files that CVS would ignore
- can use any transparent remote shell, including ssh or rsh
- does not require super-user privileges
- pipelining of file transfers to minimize latency costs
- support for anonymous or authenticated rsync daemons (ideal for mirroring)