ioerror

split 사용법 및 옵션 - 대용량 파일을 지정한 크기나 라인 수 단위로 분할하는 명령 본문

OS

split 사용법 및 옵션 - 대용량 파일을 지정한 크기나 라인 수 단위로 분할하는 명령

반응형

split - Split a file into pieces

대용량 텍스트 파일이나 바이너리 파일을 지정한 줄(line) 수, 파일 크기(bytes), 또는 특정 기준 단위로 여러 개의 작은 파일로 나누어 저장하는 유닉스 및 리눅스 기본 명령어이다. 대용량 로그 분석, 네트워크 전송 용량 제한 처리, 디스크 분할 저장 등 대용량 데이터 다루기 작업 시 주로 사용된다. 분할된 파일은 기본적으로 prefixaa, prefixab 형태의 순차적 접미사가 붙어 생성된다.

1. split 용도

  • 몇 GB가 넘는 대용량 로그 파일을 일정 크기나 라인 수로 잘라 텍스트 에디터에서 원활하게 열어보거나 분석할 때 사용된다.
  • 네트워크 전송 제한이나 이메일 첨부 용량 제한이 있는 환경에서 대용량 압축 파일을 나누어 전송한 뒤 cat 명령으로 재합성하는 상황에 활용된다.

2. split 서식

split [OPTION]... [INPUT [PREFIX]]

3. split 옵션

옵션 설명 사용가능 OS 및 쉘
-l, --lines=NUMBER 지정한 라인(줄) 수 단위로 파일을 분할한다 (기본값: 1000줄). 모든 유닉스/리눅스
-b, --bytes=SIZE 지정한 바이트(K, M, G 등) 크기 단위로 파일을 분할한다. 모든 유닉스/리눅스
-C, --line-bytes=SIZE 최대 SIZE 바이트를 넘지 않도록 행(line) 단위를 유지하며 분할한다. 모든 유닉스/리눅스
-n, --number=CHUNKS 파일을 지정한 조각(CHUNK) 개수로 균등 분할한다. GNU Coreutils Linux
-d, --numeric-suffixes[=FROM] 생성되는 분할 파일의 접미사로 알파벳 대신 숫자를 사용한다. GNU Coreutils Linux FreeBSD
-a, --suffix-length=N 생성되는 접미사의 길이를 N자리로 지정한다 (기본값: 2자리). 모든 유닉스/리눅스
--additional-suffix=SUFFIX 분할 파일 이름 뒤에 특정 확장자(e.g. .txt, .part)를 추가한다. GNU Coreutils Linux
-u, --unbuffered 입력 데이터를 버퍼링 없이 즉시 분할 출력에 복사한다 (-n r/...와 함께 사용). GNU Coreutils Linux
--verbose 분할 파일이 생성될 때마다 해당 파일 이름을 화면에 출력한다. GNU Coreutils Linux
 
# 50MB 단위로 파일을 숫자인덱스 및 .part 확장자를 붙여 분할
split -b 50M -d --additional-suffix=.part largefile.zip part_
ls -l part_*
# -rw-r--r-- 1 user group 52428800 Jul 29 14:00 part_00.part
# -rw-r--r-- 1 user group 52428800 Jul 29 14:00 part_01.part
# -rw-r--r-- 1 user group 12582912 Jul 29 14:00 part_02.part

# 10,000줄 단위로 access.log 파일을 분할
split -l 10000 access.log log_chunk_

# 분할된 파일들을 다시 하나로 원복합성
cat part_*.part > restored_file.zip
  • part_00.part, part_01.part: -b 50M 옵션에 의해 정확히 50메가바이트 크기로 분할 생성된 첫 번째와 두 번째 파일이다.
  • part_02.part: 50메가바이트 채우고 남은 나머지 데이터(약 12MB)가 들어있는 마지막 분할 파일이다.

4. split 특이사항(유의사항)

  • -b 옵션은 바이트 단위로 자르기 때문에 텍스트 파일 분할 시 중간 행(line)이 분단되어 깨질 수 있다. 텍스트 파일의 행을 유지하면서 특정 크기로 자르려면 -C 옵션을 사용해야 한다.
  • 분할 후 원래 파일로 복원하려면 단순히 cat part_* > original_file 구문을 실행하여 순서대로 합쳐주면 되며, 체크섬(md5sum, sha256sum)을 검증하는 것이 안전하다.
  • 기본 접미사 길이가 2자리(-a 2)일 경우 생성 가능한 알파벳 조합이 26x26 = 676개로 제한되므로, 조각 수가 백 단위 이상으로 매우 많아질 경우 -a 4 또는 -d 옵션을 지정하여 접미사 자릿수를 미리 늘려주는 것이 권장된다.

관련 명령어들

  • cat: 여러 파일의 내용을 하나로 연결하거나 분할된 파일을 다시 원복 합성한다.
  • csplit: 정규식 패턴이나 특정 문자열을 기준으로 파일의 특정 단락을 구분하여 분할한다.
  • tar: 대용량 디렉터리나 파일들을 하나로 묶거나 압축을 수행한다.
  • md5sum: 파일 분할 전후의 무결성을 검증하기 위해 해시 값을 추출한다.

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

 

 

반응형
Comments