rsync
와 scp
를 사용한 백업
1. 백업이 왜 중요할까?
오늘은 IT와 프로그래밍 세계에서 일하는 모두에게 가장 중요한 업무 중 하나인 데이터 백업에 대해 이야기해볼 거야. 만약 디스크 오류나 실수 때문에 중요한 데이터를 잃어본 적이 있다면, 얼마나 중요한지 잘 알 거야. 혹시 잃어본 적이 없다면, 우린 그걸 방지하기 위해 여기 있어!
상황을 상상해봐: 몇 개월 동안 프로젝트에 열심히 매달렸는데, 어느 날 갑자기 하드 디스크가 파업을 선언한 거야. 이건 SQL 쿼리 끝에 세미콜론을 까먹었을 때만큼 당황스러운데, 그보다 천 배 더 심각하다고 보면 돼. 시스템은 신뢰하기 어려울 때가 있고, 사람들은 실수를 하고, 파일은 사라질 수 있어. 백업이 있다면 이런 불쾌한 서프라이즈를 미리 대비할 수 있어.
Linux에서는 백업을 위한 강력한 도구 몇 가지가 있어. 오늘은 그 중 두 가지, rsync
와 scp
를 배워볼 거야.
2. rsync
명령어: 빠르고 스마트한 데이터 복사 도구
rsync
는 가장 인기 있는 데이터 복사 및 동기화 도구 중 하나야. 이 도구의 가장 큰 장점은 속도와 효율성이야. 모든 파일을 무작정 복사하는 대신, rsync
는 변경된 파일만 복사해. 이 점 때문에 대량 데이터를 정기적으로 백업하기에 딱 좋은 도구야.
rsync
의 문법
다음은 기본 명령 형식이야:
rsync [옵션] 원본 대상
여기서:
원본
— 복사하려는 파일이나 폴더의 경로.대상
— 데이터를 복사할 목적지.
주요 옵션과 그 기능
다음은 자주 사용되는 옵션들이야:
-a
(archive): 모든 메타데이터(권한, 타임스탬프 등)를 포함하여 복사.-v
(verbose): 진행 상황을 자세히 보여줌.--progress
: 복사 진행 상황을 표시 (큰 파일을 복사할 때 매우 유용함).--delete
: 원본에 더 이상 없는 파일을 대상에서도 삭제 (완전한 동기화에 유용함).-z
(compress): 데이터를 전송하기 전에 압축하여 작업 속도를 높임 (특히 네트워크 작업에서 중요).
예제: 로컬 데이터 복사
백업 저장을 위한 /backup
디렉토리를 만들자.
mkdir /backup
/home
디렉토리의 모든 내용을 /backup
으로 복사:
rsync -av /home /backup
이 예제를 분석해 보자:
-a
는 파일 구조와 권한을 유지.-v
는 프로세스 진행 상황을 보여줌.
다시 명령어를 실행하면, 이번에는 변경되거나 새로 추가된 파일만 복사할 거야.
예제: 원격 백업
이번에는 원격 서버로 백업을 전송하고 싶다고 가정해 보자. rsync
는 SSH 사용을 지원해.
rsync -av /backup user@remote_server:/remote_backup
여기서:
user
— 원격 서버의 사용자 이름.remote_server
— 원격 서버 주소 (예: IP 주소나 도메인 이름)./remote_backup
— 데이터를 저장할 서버 상의 경로.
SSH 키로 인증 가능하면 전송이 더욱 간편(그리고 안전)해져.
3. scp
명령: 간단하고 효율적임
scp
(Secure Copy Protocol) — 로컬 및 원격 머신 간 파일을 복사하는 도구입니다. 이 도구는 rsync
보다 약간 더 간단하며 전체 동기화가 필요하지 않은 경우에 적합합니다.
scp
문법
기본 명령 형식은 다음과 같이 보입니다:
scp [옵션] 소스 대상
여기서:
소스
— 복사하려는 파일의 경로입니다.대상
— 전달하려는 주소입니다.
주요 옵션과 그 기능
몇 가지 유용한 옵션들:
-r
: 폴더를 재귀적으로 복사합니다.-C
: 전송 전에 파일을 압축합니다.-P
: 기본값(22)과 다른 SSH 포트를 지정합니다.
예제: 파일을 원격 머신으로 복사하기
로컬 컴퓨터에서 서버로 파일을 전송하고 싶습니다. 예를 들어, 파일 이름이 document.txt
라고 가정합시다.
scp document.txt user@remote_server:/remote_folder
파일이 /home/user/documents
폴더에 있다면, 명령은 다음과 같이 보일 것입니다:
scp /home/user/documents/document.txt user@remote_server:/remote_folder
이제 파일은 원격 머신의 /remote_folder
폴더에서 사용할 수 있습니다.
예제: 서버에서 로컬 머신으로 파일 복사하기
이 과정은 반대로 작동합니다:
scp user@remote_server:/remote_folder/document.txt /home/user/documents
이 경우 document.txt
파일은 로컬 폴더에 있게 됩니다.
4. rsync
와 scp
의 차이점
두 명령어 모두 파일 복사가 가능하지만, 각각의 특징이 있어.
특징 | rsync | scp |
---|---|---|
속도 | 변경된 데이터만, 대용량에 더 빠름 | 변경되지 않은 파일도 전부 복사 |
동기화 | 완전한 동기화 지원 | 동기화 지원 안 됨 |
데이터 압축 | -z 지원 |
-C 지원 |
사용 용이성 | 설정이 더 복잡함 | 간단한 인터페이스 |
그래서 빠르게 파일을 복사해야 한다면, scp
를 사용해. 정기적인 동기화나 대용량 데이터를 다룬다면, 확실히 rsync
가 좋아.
5. 실전 예제: 백업 설정
여기 실습 과제가 있어: 프로젝트를 원격 서버에 백업하는 전체 과정을 설정하고 싶어.
예를 들어, 프로젝트 파일이
/home/user/project
폴더에 저장되어 있다고 치자. 너는 이 파일들을backup.server.com
서버의/backups/project
폴더에 백업하고 싶어.더 빠르게 복사를 수행하기 위해
rsync
를 사용할 거야.
백업 스크립트 설정
backup.sh
파일을 만들어:
#!/bin/bash
SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"
# rsync로 백업 수행
rsync -av --delete "$SOURCE" "$DESTINATION"
# 완료 메시지 출력
echo "백업 완료!"
파일을 실행 가능하게 만들어:
chmod +x backup.sh
이제 이 스크립트를 수동으로 실행할 수 있어:
./backup.sh
혹은 cron
에 추가해서 자동으로 실행되도록 설정할 수 있어 (cron에 대해서는 나중에 배우자).
6. 일반적인 실수와 그것들을 피하는 방법
명령어 라인에서 잘못된 경로. 파일 경로를 잘못 지정하면
rsync
나scp
가 아무 것도 복사하지 않을 거야. 경로가 맞는지 확인하려면ls
나pwd
명령어를 사용해봐.인증 키 없음. SSH를 사용할 때 키 설정이 안 되어 있다면 비밀번호를 계속 물어볼 거야. 과정을 쉽게 만들려면 SSH 키를 설정해.
백업 중단. 네트워크가 불안정하면
rsync
는 다음 실행 시에도 전송을 계속할 수 있어. 하지만scp
는 처음부터 다시 시작해야 해.
rsync
와 scp
를 사용하면 로컬 컴퓨터와 원격 서버 모두에서 데이터를 안전하게 복사하고 동기화할 수 있을 거야. 중요한 파일을 보호할 땐 이 도구들이 네 든든한 파트너가 될 거야.
GO TO FULL VERSION