반달가면 이글루에서 백업 - 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
'리눅스' 카테고리의 다른 글
hexdump - 리눅스에서 파일 내용을 16진수(hex)값으로 출력하기 (0) | 2023.05.03 |
---|---|
리눅스에서 pdf 파일을 jpg로 변환하기 (0) | 2023.05.03 |
archivemount - 리눅스에서 압축 파일 마운트하기 (0) | 2023.04.29 |
리눅스(우분투 계열)에서 암호 걸린 7z 압축 파일 풀기 (0) | 2023.04.29 |
리눅스에서 MS 엑셀 문서를 csv 파일로 변환하기 (0) | 2023.04.27 |