리눅스2023. 4. 29. 21:16

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/568369

 

특정 디렉토리에 있는 자료를 원격 호스트 또는 다른 디렉토리에 백업할 때 rsync 명령을 이용해서 편리하게 작업할 수 있다. 우선 아래의 예시를 보자. rsync 명령을 이용한 내부(local) 백업이다.

# rsync -r -v -u [디렉토리A] [디렉토리B]
rsync -r -v -u ~/my_dir ~/my_backup

위와 같이 입력하면 ~/my_dir 디렉토리를 포함해서 그 하위에 있는 파일과 디렉토리 전체를 ~/my_backup 디렉토리 하위로 복사한다. -r 옵션은 하위 디렉토리 구조를 모두 복사하기 위한 것이고, -v 옵션은 어떤 파일/디렉토리가 복사되고 있는지 자세히 표시하기 위한 것이다. -u 옵션은 이미 복사된 파일은 건너뛰기 위한 것이다.

-u 옵션에 대해 좀 더 설명하자면, 위의 예시에서 ~/my_dir 디렉토리 하위에 있는 것과 같은 이름의 파일이나 디렉토리가 ~/my_backup 디렉토리 하위에 있으면서 ~/my_backup 디렉토리에 있는 것이 더 늦게 생성된 것이라면 - 이미 백업이 완료된 항목이므로 -  건너뛰라는 뜻이다.

일반적인 복사에 사용하는 cp 명령과의 차이점은, -u 옵션을 통해서 목적지 디렉토리(위의 예시에서 ~/my_backup)에 복사를 할 때 이미 백업된 파일/디렉토리는 제외하고 새로 생긴 파일/디렉토리만 골라서 복사한다는 점이다. 즉 변경된 부분만 반영되므로 대량의 자료를 수시로 원격에 백업을 할 때 매우 효율적이다.

자, 이제 원격 호스트에 백업을 하는 경우를 생각해 보자. ~/my_dir 디렉토리를 my_server.net의 john 계정에 속한 /home/john/my_backup 디렉토리로 백업을 한다면 아래와 같이 실행한다. 접속 암호를 입력하면 백업이 시작된다.

# ssh를 통한 원격 백업
rsync -r -v -u ~/my_dir john@my_server.net:/home/john/my_backup

네트워크 대역폭을 줄이고 싶다면 압축전송을 할 수 있다. -z 옵션을 추가하자.

# 압축전송(-z 옵션)
rsync -r -v -u -z ~/my_dir john@my_server.net:/home/john/my_backup

위의 예시에서 만약 ~/my_dir 디렉토리에서 파일/디렉토리를 삭제했는데 이것을 백업할 곳에 반영하고 싶다면(즉, 백업에서 해당 자료를 삭제하고 싶다면) --delete 옵션을 추가해 준다.

# 백업자료에 삭제 반영(--delete 옵션)
rsync -r -v -u -z --delete ~/my_dir john@my_server.net:/home/john/my_backup

만약 원격 호스트의 ssh 포트를 기본값(TCP 22)이 아닌 다른 포트를 사용하고 있다면 -e 옵션으로 ssh 옵션을 지정할 수 있다. 만약 ssh 포트가 TCP 400번이라면 아래와 같이 될 것이다.

# my_server.net의 ssh 포트 지정(-e 옵션, 400번 포트)
rsync -r -v -u -z --delete -e "ssh -p 400" ~/my_dir john@my_server.net:/home/john/my_backup

 

 

 

728x90
Posted by 반달가면