find 명령을 gzip과 결합하는 방법

find 명령을 gzip과 결합하는 방법

특정 파일을 압축하려고 합니다.

find /media/mount/storage -newermt "2013-08-01 00:00:00" -path '*/*wind.txt' -print0 | xargs -0 gzip -l >> file_system.tar.gz

하지만 다음과 같은 오류가 발생합니다.

gzip: /media/mount/storage/20130811120802_RHI1/20130811121000_wind.txt: not in gzip format

어디서 실수를 합니까?

편집됨: 만성염이 작성한 답변으로 때때로 타르가 다시 생성되면 다음과 같은 결과가 나타납니다.

 /media/mount/storage/File system/20130505082135_CT1/20130505090000_wind.txt
 /media/mount/storage/File system/20130505085301_CT1/20130505090000_wind.txt
 tar: Removing leading `/' from member names <- the size of the tar became zero
 /media/mount/storageFile system/20130505085301_CT1/20130505091000_wind.txt
 /media/mount/storageFile system/20130505085301_CT1/20130505092000_wind.txt

답변1

나는 당신이 원하는 것은 명령이 find찾는 모든 파일을 포함하는 gzip으로 압축된 tar 아카이브를 만드는 것이라고 가정합니다(각 파일을 개별적으로 gzip으로 압축하는 것과 반대).

위 명령에는 몇 가지 문제가 있습니다.

  • gzip -l기존 아카이브를 수락하고 내용을 인쇄합니다.
  • gzip자체적으로는 tar 아카이브(여러 파일의 컨테이너)를 생성하지 않고 각 파일을 개별적으로 압축합니다.

아마도 당신이 원하는 것은 다음과 같습니다:

find [conditions] -print0 | xargs -0 tar -zcf filesystem.tar.gz

관련 정보