개발/Developing

[Linux] rsync

lazykuna 2022. 3. 17. 15:23

가끔가다 이런 명령어가 필요한 적이 있었다.

  • 디렉터리 구조를 동일하게 파일을 복사하고 싶고
    • 이를테면, cp ./a/fld1/abc.txt ../backup/fld1/abc.txt 같은 경우에, fld1/abc.txt를 굳이 중복해서 쓰고 싶지 않다던가!
  • 모든 파일을 다 복사하고 싶지는 않고, 업데이트 된 파일만 복사하고 싶을 때
  • 존재하는 파일들에 대해서만 업데이트 하고 싶을 때

찾아보니 rsync라는 좋은 명령어가 있어서 정리해 두기로 했다.

Parameters

언제나 그렇듯, man rsync 치면 다 나온다. 그 중에서 자주 쓰이는 몇 가지만 정리해 두면...

  • -r, --recursive : 디렉터리 하위 내용까지 전부 복사
  • -v, --verbose : 복사 내역 자세히 보여줌
  • —include, —exclude : 특정 파일만(혹은 제외하고) 복사하고 싶을 때
  • -z : 파일을 복사할 때 compressed로 전송함
  • -a : archive 모드 — symlink, 권한, timestamp 정보들도 그대로 전달함.

보통 -zarv 형태로 파라미터 주고 많이 쓰는 듯.

Usage Example

디렉터리 동기화

rsync -zarv src/ dst

존재하는 파일만 동기화

# Assume:
# > ls src
# > a.txt b.txt c.txt
# > ls dst
# > a.txt
# Only update a.txt without copying b.txt and c.txt.

rsync -rv --existing src dst