J-한솔넷

Linux환경에서 분할 압축 본문

유틸리티

Linux환경에서 분할 압축

jhansol 2023. 8. 18. 12:04

일단 반성부터 해야 할 듯 합니다.
최근까지 서버에서 백업을 할 때는 tar를 이용해 왔습니다. 좋은 도구이기는 한데, 분할 압축 기능이 없어 대용량 압축 파일의 경우 인터넷에서 수신하기에 부적합한데, 계속 이것만 고집하고 있었습니다. 우말안에서 불평만 하고 있는 저에 대해 깊히 반성합니다. Linux 환경에서 분할 압축은 zipunzip 명령을 이용하면 간단하게 해결됩니다.

패키지 설치

Debian 계열

apt-get install zip unzip

Redhat 꼐열

yum install zip unzip

분할 압축

분할압축을 하기 위해 zip 명령 실행시 -s xxxx옵션을 이용하여 분할압축이 가능합니다. 이와 함께 -r 옵션을 화룡하여 하위 폴더도 압축하도록 지정하는 것이 좋습니다. 압축은 주로 백업용으로 이용하기 때문에 지정 폴더 아하를 모두 압축하기 때문입니다. 분할 크기 단위는 기본으로는 바이트 단위입니다. man 페이지를 보면 The multiplier can currently be one of k (kilobytes), m (megabytes), g (gigabytes), or t (terabytes).라고 설명하고 있는데, k(킬로바이트), m(메가바이트), g(기가바이트)의 기호를 이용하여 단위를 지정할 수 있습니다. 저의 경우 1GB 단위로 파일을 분할압축했습니다.

zip -r -s 1g ./files --out backup.zip

이렇게 하면 ~.z01 형태로 번호가 매겨진 파일이 성성되고 마지막에 ~.zip파일이 생성됩니다.

-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:01 backup.z01
-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:03 backup.z02
-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:06 backup.z03
-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:08 backup.z04

---------

-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:47 backup.z21
-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:50 backup.z22
-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:52 backup.z23
-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:54 backup.z24
-rw-r--r--   1 seonghyunjang  staff   1073741824  8 18 12:57 backup.z25
-rw-r--r--@  1 seonghyunjang  staff    262027486  8 18 12:57 backup.zip

압축 해제

위 과정에서 분할된 파일은 압축 해제 명령이나 프로그램을 이용하여 압축해제가 되지 않습니다. 압축을 해제하기 위해서는 다시 하나의 파일로 합쳐야 합니다. 방법은 zip 명령 실행 시 -s 0 옵션을 이용하는 것입니다. 아래와 같이 입력하여 합칩니다.

zip -s 0 backup.zip --out backup_all.zip

위와 같이 실행하면 아래와 같이 하나의 합쳐진 파일이 생성됩니다.

-rw-r--r--   1 seonghyunjang  staff  27106456738  8 18 13:30 backup_all.zip

이렇게 생성된 파일을 프로그램을 이용하여 압축 해제 가능하고, 아래와 같이 unzip 명령을 이용할 수도 있습니다.

unzip backup_all.zip