使用 rsync 将本地文档同步至服务器
本文简要介绍了 rsync 的用法以及如何将本地文档同步至服务器。
rsync 简介
rsync 是一个用于同步文件系统的命令行工具,既可用于同步本地文件也可将本地文件系统同步至服务器。rsync 在同步文件系统时,会首先对比源目录与目标目录下各文件的最后修改时间,并只将源目录中更新过的文件同步至目标目录。因此 rsync 是 cp 和 rcp 的升级替代。
rsync 基础用法
rsync 一般用于同步文件系统,所以该命令通常带参数 -a 运行。参数 -a 为 cp 和 rcp 命令中 -r 参数的升级版:递归同步并保留符号链接、特殊文件和设备文件、修改时间、组、所有者和权限等。
rsync 最基础的用法为:
|
|
该命令会将在 dir1 目录下创建一个完全相同的 dir0 目录,同样若 dir1 目录不存在则自动创建。
|
|
该命令会将 dir0 目录下的所有文件结构同步至 dir1 目录,若 dir1 目录不存在则自动创建,得到的 dir1 目录将于 dir0 目录完全一致。
作为同步源的
dir0目录:
- 不带斜杠
/的写法dir0表示:将dir0整个目录同步至dir1目录之下;- 带斜杠
/的写法dir0/表示:将dir0目录下的所有内容同步至dir1目录之下。
作为同步目标的
dir1目录:
dir1和dir1/两种形式并无区别。
一个示例
此处给出一个具体示例帮助理解。
|
|
输出结果为:
|
|
采用不同方式同步 dir0 目录:
|
|
输出结果为:
|
|
rsync 常用参数组合
预览同步
|
|
参数 -n 即 --dry-run ,可预览即将进行的同步操作,但不会实际进行任何文件操作;参数 -v 可显示详细操作步骤,用以配合 -n。
同步删除
|
|
默认情况下,即使源目录下某些文件已经被删除,rsync 也不会删除目标目录下的任何文件。若要同步删除目标目录下的相应文件,可附加 --delete 参数。
注意,在使用
--delete参数时,请务必先配合使用-nv参数预览同步操作结果,确保没有误删除其他文件后再执行同步删除。
同步备份
指定备份存放目录
|
|
rsync 会在目标目录中新建 dir1-backup 目录,并将目标目录中因同步操作被更新或删除的原始文件移动到 dir1-backup 目录中,而不是直接删除原始文件。
|
|
输出结果为:
|
|
不指定备份存放目录
|
|
若不指定备份存放目录,rsync 则会将目标目录中因同步操作被更新或删除的原始文件的文件名后添加 ~ 标记,并存放在目标目录 dir1 下,而不是直接删除原始文件。
|
|
输出结果为:
|
|
压缩和断点续传
|
|
参数 -z 可压缩文件以降低网络传输数据量;参数 -P 为参数 --progress 和 --partial 的组合,前者显示数据传输进度条,后者可实现断点续传。
rsync 同步服务器
上传
|
|
下载
|
|
SSH密钥
|
|
rsync 同步 Hugo 网站至服务器
|
|
先预览同步操作,确认无误后备份并同步。备份存储目录是同步目标目录下的相对路径。
参考资料:
