介绍
FRAME 正在筹备社区摄影展。印刷方需要按约定展览名称查找获选图片。两个接收文件夹都有 IMG_0001.jpg,但画面不同。复制全部内容或把这些名称平铺到一起,都会交付错误的照片集。
你将保留原稿,创建明确的来源到目标选片集,安全处理已有目标,然后从独立收件目录打开归档。只需基本终端能力;命令和路径语法均在使用前解释,不要求脚本或摄影知识。
在 Workstation 输入命令,在 Photo Desk 查看图片。照片均为小尺寸 CC0 教学图片,阅读器提供来源信息。接收名称为虚构,不是作者署名。本实验练习文件交接;分辨率、色彩配置和专业印前处理不在范围内。
保留两张同名照片
本步骤将识别获选图片,把两个同名但不同的文件复制到不同展览位置。
先进入 Photo Desk。打开 Sample:向日葵是独立的真实图片样例。打开 Sources,点击每个 IMG_0001.jpg 查看完整图片,用浏览器后退返回。Ada 文件夹是桥梁,Ben 文件夹是圆舟。仅凭相机文件名不能识别照片。
策展人准确批准了以下关系。左列路径相对于 source/,右列相对于 work/print-set/:
| 获选来源 | 展览目标 | 画面身份 |
|---|---|---|
ada/IMG_0001.jpg |
Water/01-ada.jpg |
桥梁 |
ben/IMG_0001.jpg |
Water/02-ben.jpg |
圆舟 |
ada/Quiet Water.jpg |
Details/03-water.jpg |
瀑布 |
未获选试拍、私人笔记和预置样例都不能进入交付。可以读取来源,但保留所有预置字节不变。制作常规副本,不使用指向其他目录的链接。
切换到 Workstation。pwd 输出当前目录;cd 切换目录。初始目录应为 /home/labex/project/print-studio。必要时用明确路径返回:
cd /home/labex/project/print-studio
pwd
/home/labex/project/print-studio
ls 列出目录内容。source/ada 中的斜杠分隔目录层级。这些相对路径从当前目录解释:
ls source/ada
ls source/ben
两处都有 IMG_0001.jpg,但条目位于不同目录。mkdir -p 创建缺失的父目录,已有目录也不会报错。建立两个目标展区:
mkdir -p work/print-set/Water work/print-set/Details
cp 把来源复制到目标,不移动原稿。-i 在替换已有目标前询问;-v 显示复制内容;-- 结束命令选项。用引号包住路径,使带空格文件名仍为一个参数。此处目标是完整的新文件名,而非仅目录名:
cp -iv -- "source/ada/IMG_0001.jpg" "work/print-set/Water/01-ada.jpg"
cp -iv -- "source/ben/IMG_0001.jpg" "work/print-set/Water/02-ben.jpg"
新目标的输出会连接来源和目标。重试时若被询问覆盖,输入 n 并按 Enter,然后比较已有字节。不要仅因文件名熟悉就回答同意。
cmp 比较文件字节。无输出代表一致;不同则输出消息并返回非零退出状态。核对两种关系:
cmp -- "source/ada/IMG_0001.jpg" "work/print-set/Water/01-ada.jpg"
cmp -- "source/ben/IMG_0001.jpg" "work/print-set/Water/02-ben.jpg"
返回 Photo Desk,打开 Staging,必要时刷新。打开两张图片。两个目标名应分别显示桥梁和圆舟。复制成功消息不能代替对实际图片和映射的核对。
安全解决目标冲突
本步骤将拒绝错误覆盖,理解相关证据并完成选片集。继续使用同一个 Workstation 终端。
目标名称是给印刷方的承诺。为理解提示的重要性,故意提出用 Ben 的圆舟覆盖 Ada 的桥梁。下面是有意安排的冲突练习。出现覆盖问题时,输入 n 并按 Enter:
cp -iv -- "source/ben/IMG_0001.jpg" "work/print-set/Water/01-ada.jpg"
桥梁应保持完整。比较拟复制的圆舟与受保护目标:
cmp -- "source/ben/IMG_0001.jpg" "work/print-set/Water/01-ada.jpg"
预期看到 differ 消息。非零退出是有意的:拟用来源不属于这个目标。现在确认目标仍与批准来源一致:
cmp -- "source/ada/IMG_0001.jpg" "work/print-set/Water/01-ada.jpg"
无输出确认拒绝覆盖保住了桥梁。冲突规则是:先拒绝已有目标,再与预期来源比较,只在相同的情况下保留它。若不同,替换前先核对批准映射。不能从重复的相机文件名推断替换许可。
完成第三种关系。Quiet Water.jpg 两侧引号保护其中空格:
cp -iv -- "source/ada/Quiet Water.jpg" "work/print-set/Details/03-water.jpg"
cmp -- "source/ada/Quiet Water.jpg" "work/print-set/Details/03-water.jpg"
测试第一次复制的正常重复执行。问题出现时输入 n,再比较:
cp -iv -- "source/ada/IMG_0001.jpg" "work/print-set/Water/01-ada.jpg"
cmp -- "source/ada/IMG_0001.jpg" "work/print-set/Water/01-ada.jpg"
你保留了相同的已有副本,既没产生嵌套目录,也没覆盖另一张图片。在 Photo Desk → Staging 打开全部三张图片,将显示路径与表格比较。瀑布属于 Details,桥梁和圆舟属于 Water。向日葵和私人笔记不在其中。
若在冲突练习中误答同意,源桥梁仍存在。核对表格后,重新运行步骤 1 中批准的 Ada 到 01 的复制,对这个已确认错误的目标回答 y,然后再次运行其 cmp。不要通过删除源树或清空整个工作区来恢复。
交接可独立打开的选片集
本步骤仅归档策展选片树,在独立收件目录展开,并打开实际收到的照片。
从 Workstation 开始。tar 把一组文件存入归档。-czf 中,c 创建归档,z 用 gzip 压缩,f 指定后面的归档文件名。-C work 在选取 print-set 前切换 tar 的起始目录。因此归档只有一个 print-set/ 根,不含 work/、source/ 或主目录绝对路径。重新执行会从当前暂存树替换归档:
tar -czf delivery.tar.gz -C work print-set
查看列表时以 t 替换 c。它读取归档但不展开:
tar -tzf delivery.tar.gz
应看到 print-set/、Water 和 Details 目录,以及恰好三张获选照片。目录顺序不重要。若列表出现 source、试拍或笔记,说明归档了错误目录;请从策展选片树重建归档。
mkdir recipient 创建全新空收件目录。不带 -p 时会拒绝已有目录,避免把旧收件文件误认为新交付:
mkdir recipient
展开时以 x 替换 c;-C recipient 将内容放入该目录:
tar -xzf delivery.tar.gz -C recipient
收件方现在有自己的 recipient/print-set,不依赖来源路径。比较每种收到的关系:
cmp -- "source/ada/IMG_0001.jpg" "recipient/print-set/Water/01-ada.jpg"
cmp -- "source/ben/IMG_0001.jpg" "recipient/print-set/Water/02-ben.jpg"
cmp -- "source/ada/Quiet Water.jpg" "recipient/print-set/Details/03-water.jpg"
三次比较均应无输出。在 Photo Desk → Recipient 刷新,打开每张照片,再用后退返回。确认桥梁、圆舟和瀑布位于约定名称下。此页只读收件副本。用 Download delivery archive 获取真实归档,而非生成的替代品。确认 Sources 和 Sample 仍可正常打开。
重试时,为全新收件测试,用 mv 保留上次结果;它移动或重命名,不是复制。仅当 recipient 已存在且 recipient-previous 尚不存在时使用下面命令。以后重试应选择新的未用备份名:
mv -- recipient recipient-previous
然后重复 mkdir recipient 和展开命令。不要展开到源树。若暂存映射错误,按冲突规则只修正受影响目标,重建归档并使用全新收件目录。原稿使恢复成为可能。
总结
你通过来源路径和画面识别照片,将选定原稿映射到展览名称,拒绝错误覆盖,并用 cmp 核对字节。你只交付策展选片树,并打开独立收件副本。当约定交付布局不同于原始目录结构时,也能使用同样的方法。



