文章目录
引言
重新开启博客后发现很多时候捣鼓服务器时还是需要来回的折腾,在购买服务器时我也踩了一点坑,一开始选择了 Cloudcone 的 VPS。在使用测试过程中我对这个服务商还算满意,主要是性价比非常高。但最终我还是决定退掉,主要是机子有两个点让我不太满意,一是机子的硬盘不是固态硬盘,二是网络延迟没有达到我想要的值。
因此这段时间我也测试了好几个服务商的 VPS,最终选定了搬瓦工家的。测试期间不断的传输数据,如果还像以前那样子使用 FTP 来上传与下载的话,那效率真的是太低了。
于是我就开始寻找其他方法,先后尝试了 scp
与 sftp
,结果都不太满意。的确,如果是单个文件或者压缩包的话这两个工具都足够胜任。但是,当涉及大型的数据集时,就需要更好的工具了。
正文
rsync
是一个用于文件同步和传输的工具,它可以在本地或者远程系统之间同步文件和目录。rsync
可以通过本地 Shell 或者远程 Shell (SSH) 连接来工作,它具有很多有用的特性,比如:
- 快速传输:
rsync
使用一种增量传输算法,只传输发生变化的部分,因此在处理大型文件或者大量文件时效率很高。 - 保留文件属性:
rsync
默认会保留文件的所有属性,包括权限、时间戳、所有者等。 - 支持复制链接文件:
rsync
可以复制符号链接的目标文件,而不是链接本身。 - 支持部分文件传输:如果文件在传输过程中被中断,
rsync
可以恢复传输而无需重新传输整个文件。 - 支持远程同步:
rsync
可以通过 SSH 连接来在本地和远程系统之间同步文件,因此可以安全地在不同的主机之间进行文件同步。
基本用法
一般来说,rsync
的基本语法是:
rsync [options] source destination
其中,source
是源文件或目录的路径,destination
是目标路径。以下是一些常用选项:
-a, --archive
:归档模式,保留所有文件属性。-v, --verbose
:详细模式,显示详细的输出信息。-n, --dry-run
:模拟运行,显示将要执行的操作,但不实际执行。--delete
:目标成为源的镜像,将删除只存在于目标目录、不存在于源目录的文件。
排除文件
同步时排除某些文件或目录,使用 --exclude
参数;--include
参数用来指定必须同步的文件模式,往往与 --exclude
结合使用。
rsync -av --include="*.txt" --exclude='*' source/ destination
上面命令指定同步时,排除所有文件,但是会包括 TXT 文件。
远程同步
rsync
默认使用 SSH 进行远程登录和数据传输。由于早期 rsync
不使用 SSH 协议,需要用 -e
参数指定协议,比如远程服务器的 SSH 端口不是默认的 22 端口。
rsync -av -e 'ssh -p 2234' source/ user@remote_host:/destination
更多参考
以上为我个人觉得常用的一些参数说明,更多可参考: rsync 命令 菜鸟教程 https://www.cainiaojc.com/ssh/ssh-rsync.html