SMALL
대용량 파일을 복사할 때 속도와 효율성을 고려해야 합니다.
일반적인 cp 명령어는 속도가 느릴 수 있으므로, tar, rsync, dd 등의 방법을 활용하면 더욱 효율적인 복사가 가능합니다.
1. tar를 이용한 빠른 복사
위의 명령어는 tar을 사용하여 대용량 파일을 복사하는 방식입니다.
# tar cvf - ./dataset | (cd /mnt/usb ; tar xvf -)
설명
- tar cvf - ./dataset : dataset 디렉터리를 tar로 묶어 표준 출력(-)으로 보냅니다.
- | : 표준 출력(stdout)을 다른 명령어로 전달하는 파이프(pipe)입니다.
- (cd /mnt/usb ; tar xvf -) : /mnt/usb 디렉터리로 이동한 후, tar xvf - 명령어를 실행하여 압축을 해제합니다.
즉, 압축을 이용한 스트리밍 방식으로 빠르게 복사하는 방식입니다.
2. rsync를 이용한 복사 (대용량 데이터 전송 최적화)
rsync는 대용량 파일 복사에 최적화된 방법이며, 네트워크를 통한 복사에도 매우 유용합니다.
# rsync -av --progress ./dataset /mnt/usb/
설명
- -a : 아카이브 모드(소유권, 권한, 타임스탬프 유지)
- -v : 진행 상황을 출력
- --progress : 현재 복사 중인 파일의 진행 상태를 보여줌
특징
- 복사가 중간에 중단되더라도 이어서 복사가 가능 (--partial 옵션 사용 가능)
- 변경된 파일만 전송 (rsync의 핵심 기능)
네트워크를 이용한 원격 복사
# rsync -av --progress ./dataset user@remote_server:/mnt/usb/
3. dd를 이용한 복사 (디스크 이미지 및 대용량 파일)
dd는 디스크 이미지를 만들거나 블록 단위로 데이터를 복사하는 데 적합한 명령어입니다.
# dd if=/dev/sdX of=/dev/sdY bs=64M status=progress
설명
- if=/dev/sdX : 입력 소스 (예: /dev/sda1)
- of=/dev/sdY : 출력 대상 (예: /dev/sdb1)
- bs=64M : 블록 크기 설정 (64MB씩 복사)
- status=progress : 진행 상태를 출력
주의: dd는 데이터를 덮어쓰므로 조심해서 사용해야 합니다.
4. pv를 이용한 복사 (진행률 표시)
pv(Pipe Viewer)를 사용하면 진행률을 확인하면서 데이터를 복사할 수 있습니다.
# tar cf - ./dataset | pv | (cd /mnt/usb && tar xf -)
또는 dd와 함께 사용:
# dd if=/dev/sdX | pv | dd of=/dev/sdY bs=64M
특징
- pv는 데이터 전송 속도와 예상 완료 시간을 보여줌
- dd, tar와 함께 사용 가능
5. SCP를 이용한 원격 서버 복사
만약 데이터를 원격 서버로 복사해야 한다면 scp 명령어를 사용할 수 있습니다.
# scp -r ./dataset user@remote_server:/mnt/usb/
설명
- -r : 디렉터리 복사
- user@remote_server : 대상 서버의 사용자 및 주소
속도 최적화
# scp -r -C -o CompressionLevel=9 ./dataset user@remote_server:/mnt/usb/
- -C : 압축 사용
- -o CompressionLevel=9 : 최대 압축률 설정
6. 기타
대량의 작은 파일을 복사하는 경우 tar과 함께 pigz를 사용하면 더욱 빠른 압축 및 전송이 가능합니다.
# tar cf - ./dataset | pigz -c | ssh user@remote_server "tar xzf - -C /mnt/usb/"
결론
방법특징사용 예시
tar | 스트리밍 방식, 빠른 복사 | `tar cvf - ./dataset |
rsync | 네트워크 및 로컬 복사 최적, 증분 복사 지원 | rsync -av --progress ./dataset /mnt/usb/ |
dd | 디스크 이미지 및 대용량 파일 복사 | dd if=/dev/sdX of=/dev/sdY bs=64M status=progress |
pv | 진행률 표시 가능 | `tar cf - ./dataset |
scp | 원격 서버로 복사 | scp -r ./dataset user@remote_server:/mnt/usb/ |
각 방법은 사용 환경에 따라 적절히 선택하면 됩니다.
LIST
'IT > 리눅스' 카테고리의 다른 글
Ubuntu iSCSI Target (tgt) 설정 방법 (0) | 2025.02.15 |
---|---|
Ubuntu 버전 업그레이드 방법(트러블슈팅 포함) (0) | 2025.02.15 |
HPE iLO 커맨드 LAN 설정 방법 (0) | 2025.02.15 |
Redhat계열 네트워크 팀(Bonding) 구성 (0) | 2025.02.15 |
Redhat계열 네트워크 팀(Teaming) 구성 (0) | 2025.02.15 |