저는 빅 데이터 작업을 하고 있으며 64TB보다 큰 디렉터리를 보관해야 합니다. 내 파일 시스템에 이렇게 큰 파일(아카이브)을 만들 수 없습니다. 불행하게도 Linux에서 여러 부분으로 구성된 아카이브를 생성하기 위해 제안된 모든 솔루션은 먼저 아카이브를 생성한 다음 split
명령을 사용하여 이를 더 작은 파일로 분할하는 것을 권장합니다.
fe 7zip이 가능하다는 것을 알고 있지만 불행히도 RedHat 6에 내장된 도구인 tar, gzip, bzip2...를 사용해야 합니다.
사용자에게 최대 볼륨 크기를 묻는 스크립트를 만드는 방법을 알고 싶습니다. gzip을 사용하여 각 파일을 보관하고 너무 큰 파일을 분할한 다음 선택한 크기의 여러 tar 파일로 수동으로 병합합니다. 이것이 좋은 생각입니까?
기본 Linux 명령을 사용하여 대용량 파일 파티셔닝을 수행하는 다른 방법이 있습니까?
고쳐 쓰다:
최대 파일 크기 제한이 있는 파일 시스템에서 이 솔루션을 테스트했으며 작동합니다. tar
출력을 명령으로 직접 리디렉션 하는 파이프는 split
예상대로 작동합니다.
tar -czf - HugeDirectory | split --bytes=100GB - MyArchive.tgz.
생성된 파일은 이미 작으므로 병합해도 지나치게 큰 파일이 생성되지 않습니다.
cat MyArchive.tgz* | tar -xzf -
답변1
압축된 아카이브를 저장할 공간이 충분하다면 한 번에 아카이브를 생성하고 분할할 수 있습니다(GNU 가정 split
).
tar -c -vz -f - directory | split --additional-suffix=.gz.part -b 1G
이렇게 하면 etc라는 이름의 파일이 생성되며 xaa.gz.part
, xab.gz.part
각 파일은 아카이브의 1G 압축 비트입니다 tar
.
아카이브를 추출하려면:
cat x*.gz.part | tar -x -vz -f -
파일 시스템이 압축된 아카이브를 저장할 수 없는 경우 아카이브 부분을 일부 원격 위치로 대체하여 다른 파일 시스템에 기록해야 합니다.
해당 원격 위치에서 예를 들면 다음과 같습니다.
ssh user@serverwithfiles tar -c -vz -f - directory | split --additional-suffix=.gz.part -b 1G
이렇게 하면 ssh
압축된 아카이브가 큰 디렉터리가 있는 컴퓨터에서 로컬 컴퓨터로 전송되어 분할됩니다.
답변2
기본 UNIX 명령의 경우 기존 파일을 분할하는 것 외에는 다른 방법이 없습니다.
그러나 star
다중 볼륨 기능을 설치하고 사용하는 경우는 어떻습니까 star
?
이는 부품이 올바른 순서로 공급되는지 확인할 수 있는 장점이 있습니다.