리눅스에서 만든 분할 파일은 대개 세 가지 모양 중 하나다. 어떤 도구로 갈랐느냐에 따라 푸는 방법이 달라진다.
archive.tar.gz.aa archive.tar.gz.ab ... split -b 로 자른 것. 그냥 이어 붙이면 된다
archive.tar.gz.001 archive.tar.gz.002 ... split -d 또는 7-Zip 의 분할. 그냥 이어 붙이면 된다
archive.7z.001 archive.7z.002 ... 7-Zip 자체 분할. 7-Zip 이 알아서 묶는다
앞의 두 형태는 단순히 바이트를 순서대로 이어 붙인 것이다. 압축 컨테이너가 조각을 인식하는 것이 아니라 파일 자체를 자른 것이므로, 순서만 맞추면 원본과 동일해진다.
copy /b archive.tar.gz.001 + archive.tar.gz.002 + archive.tar.gz.003 archive.tar.gz
/b 는 바이너리 모드다. 빠뜨리면 텍스트 모드로 붙어 파일이 깨진다. 조각이 많으면 와일드카드를 쓸 수 있지만, 정렬 순서가 사전순이라 .10 이 .2 보다 앞에 오는 함정이 있다. 조각 번호가 두 자리를 넘어가면 명시적으로 나열하는 편이 안전하다.
Windows PowerShell 5.1 에서는 다음과 같다.
Get-Content .\archive.tar.gz.* -Encoding Byte -ReadCount 0 | Set-Content .\archive.tar.gz -Encoding Byte
PowerShell 7 이상에서는 -Encoding Byte 가 없어졌다. 대신 -AsByteStream 을 쓴다.
Get-Content .\archive.tar.gz.* -AsByteStream -ReadCount 0 | Set-Content .\archive.tar.gz -AsByteStream
용량이 크면 이 방식은 느리고 메모리를 많이 쓴다. 수 기가바이트 단위라면 copy /b 나 7-Zip 을 쓴다.
Windows 10 1803 이후에는 tar 가 기본으로 들어 있다.
tar -xvf archive.tar.gz
tar -tvf archive.tar.gz
-t 로 목록만 먼저 뽑아 보면 이어 붙이기가 제대로 됐는지 알 수 있다. 중간에서 끊기면 조각 순서나 누락을 의심한다.
원본 쪽에서 체크섬을 받아 둘 수 있으면 그것이 가장 확실하다.
Get-FileHash .\archive.tar.gz -Algorithm SHA256
sha256sum archive.tar.gz
.7z.001 형태는 첫 조각만 열면 나머지를 자동으로 찾는다. 같은 폴더에 조각이 모두 있어야 한다.
7z x archive.7z.001
메일 첨부로 주고받다가 조각이 깨지는 사례는 별도 문서에 있다.