본문 바로가기
개발/Linux

리눅스 파일 조작 명령어: dd, rsync, scp 완벽 가이드

by 낭만기사 2025. 4. 18.

리눅스 파일 조작 명령어 완벽 가이드

dd, rsync, scp 명령어를 활용한 고급 파일 관리 기술

1. dd 명령어 - 파일 변환 및 복사

dd 명령어 개요

dd 명령어는 리눅스에서 블록 단위로 데이터를 복사하고 변환하는 강력한 도구입니다. 원시 데이터를 다루는 데 특화되어 있어 디스크 이미징, 부팅 가능한 USB 생성, 데이터 변환 등 다양한 용도로 사용됩니다.

기능 요약: dd는 "data duplicator"의 약자로, 저수준에서 데이터를 복사하고 변환하는 도구입니다. 파일 시스템을 무시하고 블록 장치를 직접 다룰 수 있어 시스템 관리자에게 필수적인 명령어입니다.

기본 사용법

dd if=입력파일 of=출력파일 [옵션]

주요 옵션

옵션 설명 사용 예시
bs=BYTES 한 번에 읽고 쓸 바이트 수 설정 (블록 크기) bs=4M (4MB 블록 사용)
count=N 복사할 블록 수 지정 count=1024 (1024블록 복사)
skip=N 입력에서 N 블록 건너뛰기 skip=10 (입력의 처음 10블록 건너뛰기)
seek=N 출력에서 N 블록 건너뛰기 seek=20 (출력의 처음 20블록 건너뛰기)
conv=CONVS 변환 옵션 지정 (notrunc, noerror, sync 등) conv=notrunc,noerror

실전 예제

  1. 디스크 이미지 생성:
    dd if=/dev/sda of=disk.img bs=4M status=progress
  2. 부팅 가능한 USB 만들기:
    dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress
  3. 파일 일부만 복사:
    dd if=largefile.bin of=part.bin bs=1M count=100 skip=50
주의: dd 명령어는 매우 강력하지만 잘못 사용하면 데이터 손실을 초래할 수 있습니다. 특히 of= 대상 지정 시 실수로 중요한 디스크를 지정하지 않도록 주의하세요.

2. rsync - 원격 파일 동기화

 

rsync 명령어 개요

rsync는 파일과 디렉토리를 효율적으로 동기화하는 도구로, 로컬과 원격 시스템 간의 데이터 전송에 특화되어 있습니다. 변경된 부분만 전송하는 델타 전송 알고리즘을 사용하여 대역폭을 절약할 수 있습니다.

기능 요약: rsync는 원격 업데이트 프로토콜을 사용하여 두 위치 간의 파일 차이만 전송합니다. 증분 백업, 미러링, 일반 파일 복사 등에 널리 사용됩니다.

기본 사용법

rsync [옵션] 원본 대상

주요 옵션

옵션 설명 사용 예시
-a, --archive 아카이브 모드 (권한, 시간 등 보존) rsync -a source/ dest/
-v, --verbose 자세한 출력 rsync -av source/ dest/
-z, --compress 전송 중 압축 rsync -az source/ dest/
-h, --human-readable 사람이 읽기 쉬운 형식 출력 rsync -ah source/ dest/
--delete 대상에서 원본에 없는 파일 삭제 rsync -a --delete source/ dest/
-e 원격 셸 지정 rsync -e "ssh -p 2222" ...
--progress 전송 진행 상황 표시 rsync -a --progress source/ dest/

실전 예제

  1. 로컬 디렉토리 동기화:
    rsync -avh /path/to/source/ /path/to/destination/
  2. 원격 서버로 파일 전송:
    rsync -avz -e ssh /local/path/ user@remote:/remote/path/
  3. 원격 서버에서 파일 가져오기:
    rsync -avz -e ssh user@remote:/remote/path/ /local/path/
  4. 대역폭 제한 설정:
    rsync -avz --bwlimit=1000 source/ dest/
팁: rsync는 대규모 데이터 전송이나 정기적인 백업에 매우 유용합니다. cron 작업과 결합하여 자동 백업 시스템을 구축할 수 있습니다.

3. scp - 보안 원격 파일 복사

 

scp 명령어 개요

scp(secure copy)는 SSH 프로토콜을 이용하여 네트워크를 통해 파일을 안전하게 전송하는 명령어입니다. 데이터 전송 시 암호화를 사용하므로 보안이 중요한 환경에서 유용합니다.

기능 요약: scp는 SSH의 보안 기능을 활용하여 파일을 전송합니다. 사용법이 간단하면서도 강력한 보안을 제공하여 시스템 관리자들이 자주 사용하는 도구입니다.

기본 사용법

scp [옵션] 원본파일 대상파일

주요 옵션

옵션 설명 사용 예시
-P 포트 원격 호스트의 포트 지정 scp -P 2222 file user@host:/path
-p 파일의 수정 시간 및 권한 보존 scp -p file user@host:/path
-r 디렉토리 전체를 재귀적으로 복사 scp -r dir/ user@host:/path
-C 압축 활성화 scp -C file user@host:/path
-i 인증을 위한 개인 키 파일 지정 scp -i ~/.ssh/key.pem file user@host:/path
-q 자세한 메시지 출력 안 함 scp -q file user@host:/path

실전 예제

  1. 로컬 파일을 원격 서버로 전송:
    scp localfile.txt username@remotehost:/remote/directory/
  2. 원격 서버에서 로컬로 파일 가져오기:
    scp username@remotehost:/remote/file.txt /local/directory/
  3. 특정 포트 사용:
    scp -P 2222 file.txt user@host:/path/
  4. 디렉토리 전체 복사:
    scp -r directory/ user@host:/path/
주의: scp는 대용량 파일 전송 시 rsync보다 효율성이 떨어질 수 있습니다. 또한, 최신 버전의 OpenSSH에서는 scp 프로토콜이 더 이상 사용되지 않을 수 있으므로 sftp나 rsync를 대안으로 고려해보세요.

명령어 비교 및 사용 시나리오

명령어 주요 용도 장점 단점 권장 사용 시나리오
dd 블록 장치 복제, 파일 변환 저수준 접근 가능, 정확한 복제 사용이 복잡함, 위험성 있음 디스크 이미징, 부팅 미디어 생성
rsync 파일 동기화, 증분 백업 변경된 부분만 전송, 효율적 초기 설정이 필요할 수 있음 정기 백업, 서버 간 데이터 동기화
scp 보안 파일 전송 간단한 사용법, 강력한 보안 대용량 파일에 비효율적 간단한 파일 전송, 일회성 작업

dd 사용 시나리오

  • 물리적 디스크의 정확한 이미지 생성
  • 부팅 가능한 USB 드라이브 생성
  • 특정 블록 크기로 파일 변환
  • 디스크 성능 테스트

rsync 사용 시나리오

  • 서버 간 데이터 동기화
  • 증분 백업 시스템 구축
  • 대규모 데이터 마이그레이션
  • 제한된 대역폭 환경에서 파일 전송

scp 사용 시나리오

  • 간단한 파일 전송이 필요한 경우
  • SSH 접근만 가능한 환경
  • 소량의 민감한 데이터 전송
  • rsync가 설치되지 않은 시스템

리눅스 파일 조작 명령어 마스터하기 - dd, rsync, scp 완벽 가이드

© 2023 리눅스 시스템 관리 블로그. 모든 권리 보유.

반응형