전시용 인쇄 사진 세트 준비하기

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는 파일 바이트를 비교합니다. 출력이 없으면 같고 다르면 메시지와 0이 아닌 종료 상태를 반환합니다. 두 대응을 확인합니다.

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 메시지가 나옵니다. 0이 아닌 종료는 의도적입니다. 제안된 원본은 이 대상에 속하지 않습니다. 이제 대상이 승인된 원본과 여전히 같은지 확인합니다.

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

목록을 볼 때는 c 대신 t를 씁니다. 풀지 않고 읽습니다.

tar -tzf delivery.tar.gz

print-set/, Water와 Details 디렉터리, 정확히 세 선택 사진 파일이 보여야 합니다. 디렉터리 순서는 중요하지 않습니다. source, 시험 사진, 메모가 있으면 잘못된 디렉터리를 담은 것이므로 선별 트리에서 다시 만듭니다.

mkdir recipient는 새로운 빈 수신 디렉터리를 만듭니다. -p가 없으므로 기존 디렉터리를 거절해 이전 수신 파일을 새 전달물로 오해하지 않게 합니다.

mkdir recipient

풀 때는 c 대신 x를 사용하고 -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로 바이트를 비교했습니다. 선별 트리만 전달하고 독립적인 수신 복사본을 열었습니다. 합의된 전달 배치가 원래 디렉터리 구조와 다를 때도 같은 방법을 적용할 수 있습니다.