리눅스2023. 8. 31. 11:35

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/628677 (2019.6.28)

우선 rsync에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로

 

그 외에 rsync 관련 다른 이전 게시물(자동 원격 백업, 또는 cp로 복사하다가 중단한 경우 rsync로 재개)에서도 공통적으로 유의해야 할 문제다.

 

rsync에서 -r 옵션으로 디렉토리 구조 전체를 복사(백업)할 때, 복사할 원본 디렉토리(source directory) 뒤에 슬래시(/)를 붙이느냐 마느냐에 따라 동작이 달라진다. 목적지 디렉토리(target directory)는 슬래시 여부가 별 상관이 없다. 예시를 가지고 생각해 보자.

~/my_data 디렉토리를 ~/backup 디렉토리로 옮기는 상황을 생각해 보자. ~/my_data 디렉토리 하위에는 data.txt 파일 하나가 있다고 가정한다. 원본 디렉토리를 지정하는 인자(argument)가 슬래시(/)로 끝나는 경우, 목적지 디렉토리 하위에 원본 디렉토리를 만들지 않는다. 예를 보면 감이 잡힐 것이다.

# 원본 디렉토리 지정에 슬래시 사용(~/my_data/)
rsync -r ~/my_data/ ~/backup

# 결과 확인
ls ~/backup
data.txt

반면에, 원본 디렉토리를 지정하는 인자에 슬래시를 붙이지 않으면, 목적지 디렉토리 하위에 원본 디렉토리와 동일한 명칭의 디렉토리를 만든 후에 복사를 진행한다. 이번에는 ~/my_data 디렉토리를 ~/backup2 디렉토리로 옮기는 경우다.

# 원본 디렉토리 지정에 슬래시 사용하지 않음(~/my_data)
rsync -r ~/my_data ~/backup2

# 결과 확인(하위에 my_data 디렉토리가 생성되었음을 확인 가능)
ls ~/backup2
my_data

좀 복잡하긴 하지만 rsync를 사용할 때 이 부분을 신경 쓰지 않으면 의도한 바와 다르게 복사가 될 수 있으므로, 반드시 위에 설명한 차이점을 알고 사용하는 것이 좋겠다.

예를 들어 처음에 ~/my_data 디렉토리를 ~/my_backup 디렉토리에 아래와 같이 복사했다고 생각해 보자.

rsync -r ~/my_data ~/my_backup

위와 같이 했으면 ~/my_backup 디렉토리 하위에 my_data 디렉토리가 만들어지고 여기에 백업이 되었다. 나중에 ~/my_data 하위의 내용이 변경되어서 변경사항을 ~/my_backup/my_data에 반영하려고 한다. -u 옵션을 추가해서 변경된 부분만 반영하고자 할 때는 아래와 같이 해야 할 것이다.

rsync -r -u ~/my_data/ ~/my_backup/my_data

또는 아래와 같이 해야 한다. 즉, 원본 디렉토리의 슬래시 사용 여부에 따라 목적지 디렉토리를 다르게 지정해야 한다.

rsync -r -u ~/my_data ~/my_backup

728x90
Posted by 반달가면