본문 바로가기
BackEnd/Linux

[리눅스] 용량이 큰 파일 나누어 압축하기 / split

by 성은2 2025. 3. 4.
반응형

크다면 크다고 할 수 있는 나의 로그파일.. 38G 였습니당.

파일질라로 다운로드 안됨. 

그래서 로그파일을 분할 후 압축하여 로컬로 다운 받았습니다.

 

 

1. 파일 나누기 (split)

구문

nice -n 19 split -b 4G {경로}/{파일명} {저장할경로}/{저장할파일명 접두사}

예시

nice -n 19 split -b 4G /home/foadm/logs/largefile_20250301.log /home/foadm/logs/largefile_part_

 

설명:

  1. nice -n 19 → 가장 낮은 우선순위로 실행하여 다른 중요한 작업에 영향을 덜 줌.
  2. split → 파일을 여러 개로 나누는 리눅스 명령어
  3. -b 4G → 4GB 단위로 파일을 분할 (4G = 4기가바이트)
  4. /경로/largefile.log → 분할할 대상 원본 파일 경로
  5. /경로/largefile_part_ → 분할된 파일의 이름 접두사

 

이렇게 실행하면 /home/foadm/logs/ 경로에 다음과 같은 파일들이 생성됨: 지정한 파일명 뒤에 aa, ab ~ 이름이 붙는다.

largefile_part_aa  (4GB)
largefile_part_ab  (4GB)
largefile_part_ac  (4GB)
largefile_part_ad  (4GB)
largefile_part_ae  (4GB)
largefile_part_af  (4GB)
largefile_part_ag  (4GB)
largefile_part_ah  (4GB)
largefile_part_ai  (4GB)
largefile_part_aj  (잔여 크기, 2.2GB)

 

* -d 옵션을 사용하면 숫자로 파일명을 생성할 수 있다. (largefile_part_01, largefile_part_02 형태)

split -b 4G -d /경로/largefile.tar.gz /경로/largefile_part_

>> largefile_part_01  (4GB)

    ....

 

2. 분할된 파일 개별 압축

파일을 분할 하였지만 로컬로 다운 받기 위해서 압축을 진행했다.

* 압축 명령어는 CPU를 많이 잡아먹는 편이기 때문에 주의가 필요하다.

부담이 된다면 압축 진행하지 않고 분할한 파일을 그대로 다운받아도 되지 않을까 하는.. 4G 로 분할했으니까요!

구문

for file in /home/foadm/logs/largefile_part_*; do tar -czf "$file.tar.gz" -C /home/foadm/logs "$(basename "$file")"; done

 

요약:

for 루프  구문으로 /home/foadm/logs 디렉터리에 있는 largefile_part_ 로 시작하는 모든 파일을 하나씩 압축하는 반복 작업을 수행. (* 아스타 사용 -> largefile_part_* )

 

설명:

  1. /home/foadm/logs/ 디렉토리 내에서 largefile_part_ 로 시작하는 모든 파일을 찾습니다.
  2. 각 파일에 대해 tar -czf 명령어로 .tar.gz 형식으로 압축합니다.
  3. **basename "$file"**로 파일 이름만 추출
  4. -C /home/foadm/logs 옵션으로 해당 디렉토리에서 압축을 진행합니다.

 

구문 실행 결과:

4G로 분할되었던 각 로그파일이 (aa~ai) 압축됨.

 

'BackEnd > Linux' 카테고리의 다른 글

[Linux] alias 등록 / alias 수정 / alias 별칭 영구등록  (0) 2024.11.14