1. 问题描述
需要把服务器项目拷贝到本地, 其中数据集在服务器是通过软链接存放的. 使用src -r
命令, 会导致软链接的数据集也复制到本地, 于是研究了如何跳过软链接的方法. 方法有两个:
- 在服务器压缩项目, 本地解压;
- 使用
rsync
差异复制命令.
本次使用第二种方法.
2. 命令介绍
Rsync 是一种快速且极其通用的文件复制工具。以其 Delta 传输算法,通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量
rsync source_path destination_path
其中, source_path是需要拷贝的路径/文件, destination_path是希望拷贝到的路径.一些比较常用的具体参数如下:
命令 | 解释 |
---|---|
-z | 传输时进行压缩提高效率 |
-v | 显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息 |
-P | 显示文件传输的进度信息 |
-a --archive | 归档模式,表示递归传输并保持文件属性,等同于"-rtopgDl" |
-r --recursive | 以递归模式拷贝目录 |
-R --relative | 使用相对路径 |
-l --links | 如果文件是软链接,则拷贝软链接本身而非软链接所指向的文件 |
-L --copy-links | 如果文件是软链接,拷贝软链接指向的文件 |
-W --whole-file | 拷贝文件时不进行增量检测 |
-t --times | 保持 mtime 属性 |
--exclude=PATTERN | 指定排除不需要传输的文件模式 |
--include=PATTERN | 指定不排除而需要传输的文件模式 |
注意:
- rsync 默认用"quick check"算法决定哪些文件需要增量传输。此算法只比较文件的大小和 mtime,即使其它属性不同也会认为它们是完全相同的文件,从而不需要增量传输
建议任何时候都加上"-t",否则目标文件 mtime 会设置为系统时间,导致下次更新检查出 mtime 不同而导致增量传输无效.- 如果需要查看详细所有参数, 查看Rsync命令参数详解
如图, 使用效果: