gzip 압축 파일을 tar.gz 아카이브로 변환하는 방법은 무엇입니까?

gzip 압축 파일을 tar.gz 아카이브로 변환하는 방법은 무엇입니까?

작은 파일이 많이(약 500만 개) 있는데, 각각 gzip.tar.gz

  • 파일 압축을 풀고 다시 압축할 공간이 부족해서 tar.gz해야겠네요제자리에. 축소 비율은 약 15:1로 꽤 좋습니다.
  • CPU 시간을 많이 사용할 수 없기 때문에 재압축하는 데 시간이 오래 걸릴 수 있습니다.
  • 파일을 다른 곳으로 이동하거나 삭제할 수 없습니다.중요한 안전 이유

그래서. 어떡해?

답변1

아카이브를 압축할 필요는 없으며 이미 압축된 파일을 아카이브에 추가하기만 하면 됩니다.

tar -cf archive.tar directory_with_compressed_files

답변2

적은 수의 파일을 저장할 공간이 충분하다면 청크로 보관하거나 원하는 경우 자동화할 수도 있습니다. 파일이 다음과 같이 저장되어 있다고 가정합니다.

.
+-dir0000
| +-file0000.gz
| +-file0001.gz
| [...]
+-dir0001
| +-file1000.gz
| +-file1001.gz
[...]

각 디렉터리에 대해 다음을 실행합니다(파일의 공유 루트에서).

tar rf /path/to/archive_name.tar dir_name
rm -r dir_name

이 작업을 자동으로 수행하는 데 동의하는 경우(시도했는데 효과가 있었지만 find무시할 수 있는 오류 메시지가 표시됨) 다음을 시도해 보세요.

find * -maxdepth 1 -type d -exec sh -c "tar rf /path/to/archive_name '{}' && rm -r '{}'" \;

(언제나 그렇듯이 먼저 테스트 디렉토리 구조에서 이것을 시도하여 원하는 대로 작동하는지 확인할 수 있습니다!)

귀하의 디렉토리에 공백이 있는 경우를 대비해 인용했습니다 {}. 플랫 파일 구조 가 있는 경우 -type d. 우선 아카이브를 여러 부분으로 나누세요!+-execfind

결국 모든 파일은 아카이브로 이동됩니다. 느리지만 할 수 있습니다.

관련 정보