Linux 서버에 보관하고 싶은 대용량 파일 세트가 있습니다. 이 파일을 1GB 압축 파일 세트로 압축해야 합니다.
gzip을 사용하여 파일을 압축하고 있지만 실제로 파일을 압축하기 전까지는 압축 폴더의 최종 크기를 알 수 없습니다. 압축된 파일의 최종 크기를 얻기 위해 다음 명령을 사용했지만, 원하는 최종 크기를 얻을 때까지 새 파일을 계속 추가하고 압축해야 하므로 그다지 효율적이지 않습니다.
tar -czf - /path/to/compressed-directory | wc -c
이를 수행하는 효율적인 방법이 있습니까? 아니면 개별 파일을 압축한 다음 단일 압축 파일을 사용하여 최종 아카이브를 만드는 것을 고려해야 합니까?
답변1
아카이브에 다음 파일을 추가하면 1GB 제한을 초과할지 여부를 판단하는 데는 시행착오 외에 다른 방법이 없습니다. 또한 압축 파일이 1GB보다 클 수 있으며, 이 경우 원하는 작업을 수행하지 못할 수 있습니다.
split
모든 파일의 tar.gz 아카이브를 1GB 청크로 나누는 것이 좋습니다 . 각 조각을 개별적으로 추출할 수는 없습니다. 대신 추출을 위해 다른 쪽 끝에서 하나의 큰 .tar.gz로 다시 조립해야 합니다.
예를 들어:
tar -czf - /path/to/whatever | split -b 1024m - prefix
여기서 prefix
생성된 분할 파일의 파일 이름 앞부분은 문자입니다. 반대쪽 끝을 재조립하고 추출합니다.
cat prefix* | tar -xzf -