使用 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 网站至服务器
|
|
先预览同步操作,确认无误后备份并同步。备份存储目录是同步目标目录下的相对路径。
参考资料: