Computer >> 컴퓨터 >  >> 스마트폰 >> Linux

리눅스에서 대용량 파일을 다중 파트 Tar 파일로 분할하고 복원하는 방법

리눅스에서 대용량 파일을 다중 파트 Tar 파일로 분할하는 방법

백업 데이터나 대량의 파일을 온라인 스토리지에 업로드하거나 다른 사람에게 전송해야 할 때, 서비스마다 파일 하나당 용량 제한(예: 100MB)이 있어 곤란했던 경험이 있으실 겁니다. 이럴 때 tar 명령어와 split 명령어를 조합하면 하나의 큰 파일을 지정한 크기의 조각으로 손쉽게 나눌 수 있습니다.

필자도 최근 온라인 백업을 진행하면서 같은 문제를 겪었습니다. 사용하던 클라우드 스토리지가 파일당 100MB로 용량을 제한하고 있었는데, 올려야 할 백업 파일의 크기는 약 1GB였습니다. 다행히 tar 기반의 간단한 방법을 찾았고, 이를 통해 백업 파일을 100MB짜리 열 개의 조각으로 나눈 뒤 순차적인 파일명으로 저장할 수 있었습니다.

1단계: 파일을 여러 개의 tar 조각으로 분할하기

분할 대상은 dbbackup.db라는 약 1GB 크기의 파일이었습니다. 이 파일을 100MB씩 열 개의 tar 파일로 만드는 명령어는 다음과 같습니다.

# tar -cf - dbbackup.db | split -b 100m - db_backup.tar

명령어의 구성 요소를 살펴보면 다음과 같습니다.

  • tar -cf - dbbackup.db: dbbackup.db 파일을 tar 아카이브로 묶되, 결과물을 표준 출력(-)으로 내보냅니다.
  • split -b 100m - db_backup.tar: 파이프로 전달받은 데이터를 100MB 단위로 잘라, db_backup.tar를 접두사로 하는 파일들로 저장합니다.

파일 크기에 따라 실행에 시간이 다소 걸릴 수 있습니다. 완료되면 db_backup.taraa, db_backup.tarab, db_backup.tarac처럼 알파벳 두 글자가 순서대로 붙은 100MB짜리 파일 열 개가 생성됩니다.

참고로 split 명령어에 -d 옵션을 추가하면 알파벳 대신 00, 01, 02 같은 숫자 접미사를 붙일 수 있습니다.
예: # tar -cf - dbbackup.db | split -b 100m -d - db_backup.tar

2단계: 분할된 파일을 다시 하나로 합치기

생성된 조각 파일들은 외장 드라이브나 온라인 스토리지로 부담 없이 옮길 수 있습니다. 원본 파일로 복원할 때는 다음 명령어 하나면 충분합니다.

# cat db_backup.tara* | tar x

cat이 모든 조각(db_backup.taraa부터 마지막 조각까지)을 파일명 순서대로 이어 붙여 출력하면, tar x가 해당 스트림을 받아 아카이브를 해제합니다. 이렇게 하면 분할 이전과 동일한 1GB 원본 파일을 그대로 되돌릴 수 있습니다.

마무리 및 추가 팁

  • 전송 과정에서 데이터가 손상되지 않았는지 확인하려면, 분할 전후로 md5sum 또는 sha256sum으로 체크섬을 비교해 보세요.
  • 용량을 더 줄이고 싶다면 gzip 압축을 함께 사용할 수 있습니다. 예: # tar -czf - dbbackup.db | split -b 100m - db_backup.tar.gz, 복원 시에는 # cat db_backup.tar.gz* | tar xzf -
  • 조각 파일을 받는 상대방이 Windows 환경이라면 7-Zip 같은 도구로도 분할된 tar 조각을 합칠 수 있습니다.