rsync와 유사한 아카이브 파일 업데이트

rsync와 유사한 아카이브 파일 업데이트

업데이트 백업을 사용하면 rsync --include-from=files --exclude-deleted다음과 유사한 피드백을 얻을 수 있습니다.

Added file: new.file
Added file: other.file
Deleted file: deleted.file
etc.

표준 UNIX 보관 도구(zip, tar 등)를 사용하여 동일한 목적을 달성할 수 있습니까? 아카이브에 새 파일이 추가되고 삭제된 파일은 삭제되나요?

예를 들어 zip -ru@ out < files포함 목록을 기반으로 아카이브를 업데이트하지만 삭제된 파일이 있는 경우아니요삭제되었습니다. 따라서 아카이브에는 남은 쓰레기가 많이 남아 있습니다.

물론 아카이브를 삭제하고 전체를 다시 만들 수 있지만 모든 파일이 추가되었음을 나타내는 수천 줄의 출력을 얻게 되므로 말하자면 "증분" 출력을 얻지 못할 것입니다.

(부가 질문은 포함 파일에 와일드카드 기반 파일을 포함하는 방법이지만 별도의 질문에 적합할 수 있습니다.)

답변1

zip 의 옵션을 사용할 수 있습니다 --filesync.

~에서우편번호(1)매뉴얼 페이지:

-FS

--파일 동기화 보관된 콘텐츠를 운영 체제의 파일과 동기화합니다. 일반적으로 아카이브를 업데이트하면 새 파일이 추가되고 변경된 파일이 업데이트되지만 운영 체제에 더 이상 존재하지 않는 파일은 아카이브에서 제거되지 않습니다. 이 옵션을 사용하면 파일 시스템에 대해 아카이브의 항목을 확인하는 새로운 모드를 사용할 수 있습니다. 항목의 파일 시간 및 파일 크기가 운영 체제 파일의 파일 시간 및 파일 크기와 일치하는 경우 해당 항목은 파일 시스템에서 읽어 압축되는 대신 이전 아카이브에서 복사됩니다. 운영 체제 파일이 변경된 경우 평소대로 항목을 읽고 압축합니다. 아카이브의 항목이 운영 체제의 파일과 일치하지 않으면 항목이 삭제됩니다. 이 옵션을 활성화하면 새 항목과 동일한 아카이브가 생성되지만 기존 항목은 압축되지 않고 복사되므로 기존 아카이브는 다음을 사용하여 업데이트할 수 있습니다.-FS새 프로필을 만드는 것보다 훨씬 빠릅니다. 당신은 또한 사용을 고려할 수 있습니다-유파일을 업데이트하는 데 사용됩니다. 이 옵션이 작동하려면 상대 경로가 일치하도록 아카이브가 생성된 동일한 디렉터리에서 아카이브를 업데이트해야 합니다. 이전 아카이브에서 복사된 파일이 거의 없는 경우 새 아카이브를 만드는 것이 더 빠를 수 있습니다. 이 옵션이 제대로 작동하려면 시간대 환경 변수 TZ를 현지 시간대에 따라 설정해야 합니다. 원본 아카이브가 생성된 이후 시간대 변경으로 인해 모든 파일의 시간 일치 및 재압축이 실패할 수 있습니다.

이 옵션은 아카이브에서 파일을 삭제합니다. 원본 아카이브를 보관해야 하는 경우 먼저 아카이브의 복사본을 만들거나- 나가업데이트된 아카이브를 새 파일로 출력하는 옵션입니다. 속도가 느려질 수 있지만 새 아카이브 이름으로 새 아카이브를 생성하는 것이 아카이브와 운영 체제 경로 간의 불일치를 방지하는 데 더 안전하며 선호됩니다.

예:

user@host:~/$ mkdir compressme; echo "Lorem Ipsum" >compressme/file1; echo "Lorem Ipsum" >compressme/file2; echo "Lorem Ipsum" >compressme/file3
user@host:~/$ zip -r --filesync all.zip compressme
  adding: compressme/ (stored 0%)
  adding: compressme/file2 (stored 0%)
  adding: compressme/file1 (stored 0%)
  adding: compressme/file3 (stored 0%)
user@host:~/$ rm compressme/file2
user@host:~/$ zip -r --filesync all.zip compressme
updating: compressme/ (stored 0%)
deleting: compressme/file2

답변2

-u(GNU)tar(1)에는 (update) 가 있습니다 . 하지만 그것은확실히제자리에 업데이트하고 끝에 새 콘텐츠를 추가하기만 하면 됩니다(결과에는 여러 버전의 파일이 포함되며 나중에 정리하면 재미있을 것입니다...), -a(추가) 및 -delete(설명서에는 실제로 삭제되었는지 여부가 나와 있지 않습니다. 또는 존재하지 않는 것으로 표시된 경우 후자인 것으로 생각됩니다).

ar(1) 형식(정적 라이브러리에 가장 일반적으로 사용되지만 실제 아카이브 형식)은 d삭제, move 및 quick 추가를 허용합니다.

여기서 cpio(1)에는 큰 주의 사항이 있습니다.아니요휴대용이 아니기 때문에 사용할 수 있습니다.

Unix 표준 pax(1)에는 파일 수정에 대한 규정이 없습니다(여기서는 spax(1)가 소수의 형식을 처리한다는 점은 당연합니다).

아카이브가 압축되어 있으면 운이 좋지 않습니다. 위 도구를 사용하여 수행하는 작업은 결과를 보관하고 압축하는 것뿐입니다. 아카이브 내용을 수정하려면 전체 아카이브를 다시 압축해야 합니다.

zip(1) 형식은 개별적으로 압축된 파일 모음이며, 그 내용은 (상대적으로) 추가/제거/이동이 쉽습니다.

관련 정보