rsync 会协调文件和目录树,同时避免不必要地传输未变化的数据。高效并不意味着每次调用都安全:源语法、末尾斜杠、元数据、排除项和删除策略共同决定结果。
网络共享 · 第 2 课
rsync
学习如何预览、运行并验证安全的本地或基于 SSH 的 rsync 目录同步。
理解源与目标
在本地将 source/ 的内容同步到 destination/:
$ rsync -a -- source/ destination/
source/ 末尾的斜杠表示“复制该目录的内容”。如果没有斜杠,rsync -a source destination/ 会创建或更新 destination/source。改变斜杠位置时,务必预览最终路径。
rsync -a source/ destination/ 中源末尾的斜杠表示什么?
理解归档模式
归档模式 -a 等效于一组递归和元数据保留选项,通常概括为 -rlptgoD。在权限和平台支持允许时,它会保留符号链接、权限、修改时间、组、所有者及设备或特殊文件。
归档模式不包括保留硬链接、ACL 或扩展属性;这些通常分别需要 -H、-A 和 -X。它本身也不会创建历史版本。
哪项元数据不包含在单独的 -a 中?
预览传输
在具有重要影响的同步前,使用试运行和逐项变更:
$ rsync -a --dry-run --itemize-changes -- source/ destination/
试运行根据当前扫描预测操作,但不能保证文件在实际命令前不会变化。保存并审查确切命令,只有确认两个端点后,才能移除 --dry-run 运行。
--dry-run --itemize-changes 提供什么?
通过 SSH 同步
使用熟悉的远程操作数向远程主机推送或从中拉取:
$ rsync -a -- source/ alice@example.net:/srv/data/
$ rsync -a -- alice@example.net:/srv/data/ destination/
现代 rsync 通常对这种形式使用 SSH,但应确认配置的远程 shell、主机密钥、账户权限以及远端是否有 rsync。-z 压缩可以帮助在受限链路上传输可压缩数据,但对已经压缩的数据可能浪费 CPU。
哪种操作数顺序会把远程数据拉取到本地目录?
将删除视为破坏性操作
--delete 会在同步范围内删除目标中存在、源中不存在的条目。因此,端点颠倒、斜杠错误或排除项错误都可能擦除有效数据。授权前,应使用测试目标预览、确保存在可恢复备份、检查挂载状态,并考虑最大删除数量限制。
实际运行后,应检查退出状态和日志、比较预期文件数及元数据,并测试代表性内容或恢复。rsync 同步本身也会镜像不必要的删除或损坏,并不是完整备份策略。
--delete 在同步期间可能做什么?
课程已完成
你已完成 rsync
现在,你可以预览并验证 rsync 操作,而不会忽略其破坏性边缘情况。
使用末尾斜杠表达预期目录布局。
必要时添加归档模式未覆盖的元数据选项。
实际同步前审查逐项试运行输出。
验证 SSH 身份和端点方向。
将删除和备份保留视为明确策略。