파일을 여러 조각으로 분리해 주는 linux split 명령어 사용법
서비스 사용자가 많지 않아서 로그 파일 설정을 하루마다 rolling 되게 설정했는데 갑자기 사용자가 폭증해서 로그 파일이 매누 커졌다고(Ex: 5G) 가정해 봅시다.
별도의 로깅 솔루션을 붙이지 않았다면 이렇게 큰 로그 파일은 에디터로 열기도 힘들고 grep 같은 TEXT 유틸리티로 패턴을 찾기도 어렵습니다.
split 명령은 파일을 크기나 라인수등 지정한 조건으로 여러 파일 조각으로 분리해주는 프로그램으로 큰 로그 파일이나 TEXT 파일등을 분할해서 처리하는데 사용할 수 있습니다.
split 명령을 실행해도 원본 파일은 남아 있습니다.
test 를 위해서 100 줄짜리 파일에 random string 을 생성하고 split-test 라는 이름으로 저장합니다.
for i in {1..100};do printf "%03d %s\n" $i $(openssl rand -hex 12);done > split-test
라인수로 분리
파일을 라인수로 분리하려면 -l 옵션 뒤에 분리할 라인수를 적어주면 됩니다. 다음은 split-test 파일을 10개의 파일로 분리해 줍니다.
split -l 10 split-test
파일명은 xaa로 시작해서 xab, ... xaj 까지 생성됩니다.
$ ls -l total 44 -rw-r--r-- 1 lesstif lesstif 2900 May 24 22:15 split-test -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xaa -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xab -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xac -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xad -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xae -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xaf -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xag -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xah -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xai -rw-r--r-- 1 lesstif lesstif 290 May 24 22:25 xaj
같은 크기로 분리
동일 크기로 분리하려면 -n 옵션 뒤에 분리할 파일의 갯수를 지정하면 되며 맨 마지막 파일을 제외하고는 동일한 사이즈의 파일이 생성됩니다.
다음은 원본을 5개의 파일로 분할합니다.
split -n 5 split-test
크기를 지정해서 분리
-b 옵션 뒤에 크기를 지정해서 분리할 수도 있습니다. 다음은 각 파일을 120 byte 로 분리합니다.
split -b 120 split-test
단위를 지정하는 알파벳인 k, m, g를 사용할 수도 있습니다. 다음은 1k(1024 byte) 단위로 파일을 분할합니다.
split -b 1k split-test