整理展览照片并打包交付

LinuxBeginner
立即练习

介绍

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 核对字节。你只交付策展选片树,并打开独立收件副本。当约定交付布局不同于原始目录结构时,也能使用同样的方法。