介绍
图书修复团队现在使用专用接收账户。将 Garden Atlas 交付到准备好的工作台,再更新目录和修复方法、新增一页资料,并移除旧生成清单。接收方必须能阅读交付正文并运行阅读工具。
本实验独立开始,凭据与目录均已准备。只需熟悉基本终端操作并掌握第一项实验的本地 rsync 方法;本实验会介绍 SSH 身份、主机校验和远程路径。命令和虚构图书正文仍为英文。
确认准备好的接收账户
在本步骤中,你将确认准备好的 SSH 身份,并把资料交付到实际接收账户。使用 Terminal。这个独立实验将来源与接收侧重建为第一版,不复用上一实验的文件。
两个账户共享这个训练环境和内核。它们表示迁移的两侧,并不是两台物理机器。labex 拥有 /home/labex/project/folder-move/old;bindery 拥有 /home/bindery/incoming。接收根目录中已有自己的便签和旧目录正文。
SSH 通过加密连接,以另一个账户执行命令。客户端身份密钥证明你是谁;服务器主机密钥标识连接端点。二者解决的问题不同。准备程序从本环境的配置数据生成了专用密钥和可信主机密钥固定记录,没有改变平台的登录访问方式。
cd /home/labex/project/folder-move
cat ssh/config
Host bindery-desk 是客户端别名,选择同一环境的回环地址 127.0.0.1 上的用户 bindery。IdentityFile 指向专用私钥;不要显示或复制其内容。IdentitiesOnly yes 选择该身份。UserKnownHostsFile 指向准备好的固定记录;StrictHostKeyChecking yes 拒绝未知或已变化的主机。BatchMode yes 使身份验证错误直接失败,而不是等待密码。
ssh-keygen -lf 显示公钥指纹。将 SHA256: 值与准备数据中的指纹比较:
ssh-keygen -lf ssh/known_hosts
cat ssh/host-fingerprint.txt
哈希值必须相同,标签和注释可以不同。这里通过可信的环境配置文件确定预期身份;实际迁移需要独立可信的管理员指纹。仅从不可信网络获取密钥不能建立信任。如果不匹配就停止,不要删除固定记录或关闭主机校验。
-F ssh/config 选择这个独立客户端配置,不替换普通 SSH 设置。单引号中的命令交给接收侧执行,其路径是远程路径。分号分隔在该远程 shell 中按顺序执行的命令。传输前确认账户、家目录、rsync 和实际目标:
ssh -F ssh/config bindery-desk 'whoami; pwd; rsync --version; ls -la /home/bindery/incoming; cat /home/bindery/incoming/receiver-note.txt'
rsync --version
账户应为 bindery,家目录应为 /home/bindery,两端均显示 rsync。便签仍是同一条关于西侧书架的接收说明。成功连接到错误账户不能算有效迁移。权限被拒绝时应检查所选身份和接收权限;主机变化警告则需要调查可信端点。不能通过添加不安全选项解决这两类问题。
对 rsync 而言,-e 'ssh -F ssh/config' 选择 SSH 传输。目标 bindery-desk:/home/bindery/incoming/collection/ 使用配置的账户及其接收路径。冒号使它成为远程目标;名为 remote 的本地文件夹不会使用 SSH。保留先前练习过的来源尾斜线和过滤规则:
rsync -ani -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -ai -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
ssh -F ssh/config bindery-desk '/home/bindery/incoming/collection/read-book'
从接收账户读取 Garden Atlas 的目录和纸铰修复方法。这是实际远程使用已交付的阅读工具,依赖其隐藏配置和执行权限。执行后仍返回本地提示符;一次性 SSH 命令不会把本地终端切换到远程家目录。
完成首次远程交付
在本步骤中,你将交付独立的生成清单,并通过 SSH 读取接收方自有数据和来源管理的数据。继续在 /home/labex/project/folder-move 中使用 Terminal。
只同步受管的 generated/ 目录,不把私人人员安排便签纳入传输:
rsync -ani -e 'ssh -F ssh/config' old/generated/ bindery-desk:/home/bindery/incoming/generated/
rsync -ai -e 'ssh -F ssh/config' old/generated/ bindery-desk:/home/bindery/incoming/generated/
ssh -F ssh/config bindery-desk 'cat /home/bindery/incoming/generated/current.txt /home/bindery/incoming/receiver-note.txt; /home/bindery/incoming/collection/read-book'
预期看到 Garden Atlas | desk edition 1、未改变的接收便签以及可用的阅读工具。归档模式保留执行位,但接收文件属于接收账户;它无法保留任意来源所有者。两个受管目录已经完整,无须镜像接收根目录。
如果先前未过滤的传输带入了预览文件,先通过 SSH 检查那个确切的多余文件。使用本地实验教过的 rm 方法,只删除该临时文件。不要删除 incoming 或接收便签。过滤能阻止后续传输,却不会清理已经复制的文件。
在受管范围内应用下一版
在本步骤中,你将交付第二版,并仅移除旧生成清单。留在 /home/labex/project/folder-move 中的 Terminal。冒号后的目标路径属于接收账户。
cat 接受多个文件名,并按顺序显示内容。替换可编辑来源前,先阅读提供的下一版:
cat revision/collection/texts/catalog.txt revision/collection/texts/treatment.txt revision/collection/texts/addendum.txt
目录现在有 48 页,修复方法改用亚麻铰,另有新增补充资料。cp -a 递归复制并保留文件属性。revision/. 表示所有内容,包括隐藏文件。这会把提供的变更覆盖到 old/ 中,但不会删除修订版中缺失的旧条目。工作台明确退役了 old/generated/obsolete.txt,因此只删除这一确切的来源文件。rm 会永久删除文件,不要扩大路径范围。
cp -a revision/. old/
rm old/generated/obsolete.txt
通常 rsync 根据大小和修改时间判断文件数据是否变化。-c 增加文件内容的校验和比较。这些文件很小,开销有限,也能发现时间戳未变的等长内容变化。它不会建立版本历史或备份。预演并执行资料更新:
rsync -anci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -aci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
资料预演应显示两份修订正文和新增补充资料,不包含临时预览。也可能显示仅属性发生变化的条目。
--delete 删除目标中来源已不存在的条目,范围是所选同步目录内部。这里只有 generated/ 完全受管,接收根目录不是。预演退役操作,留意 *deleting obsolete.txt,然后严格按相同范围执行:
rsync -anci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
rsync -aci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
ssh -F ssh/config bindery-desk 'cat /home/bindery/incoming/generated/current.txt /home/bindery/incoming/collection/texts/addendum.txt /home/bindery/incoming/receiver-note.txt'
ssh -F ssh/config bindery-desk '/home/bindery/incoming/collection/read-book'
你应读到工作台第二版、新增页、原接收便签及更新后的阅读工具输出。在根目录使用 --delete 镜像可能抹掉便签。绝不要用这种方式移除这一份受管清单。
重复相同的预演:
rsync -anci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -anci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
应不再有文件变化。在这里声明的范围内重复操作是安全的,但以后来源发生删除时,仍须明确判断哪些目标目录由来源管理。仅靠 rsync 无法恢复原版;需要历史时应另做备份。
总结
你交付了可用的资料集,保留了隐藏配置、阅读工具权限和接收台便签。第二轮同步更新了受管文件,并且只在声明的范围内删除退役清单。同步具有方向性;它不是带版本历史的备份,也不会合并冲突。



