rsync에 대해 알아보자.
rsync란?
rsync란 컴퓨터 시스템 상에서 파일을 효율적으로 전송하고 동기화하기 위한 프로토콜이자 unix용 유틸리티의 하나로, 파일의 타임스탬프와 크기를 검사한다. 출발지와 목적지를 비교해, 다른 부분만 전송할 수 있다.
scp보다 빠르고, 변경된 파일들의 싱크를 맞춰줄 수 있어 대용량 파일을 전송하고 동기화할때 좋다.
회사에서 서버를 교체했는데, 그때 8TB의 파일을 전송해야 하는 일이 있었다.
이틀에 걸려 파일 및 디렉토리 구조를 미리 복사하고, 최종적으로 한번 더 수행해 sync를 맞췄다.
실제 rsync를 수행하기 전, --dry-run을 수행해 한 번 확인하는 과정을 거치길 바란다..
이 옵션 없었으면 배포일에 이틀걸렸던 복사과정을 한번 더 실행시킬 뻔 했다....
사용법
$ rsync [options] [source] [destination]
이때, source path에 trailing slash('/') 에 유의해야 한다.
- / 가 없을 경우, destination 하위에 source 폴더가 생기게 된다.
- / 가 있을 경우, source 폴더의 내용물만 destination으로 복사 된다.
옵션
옵션 | 설명 |
-v | verbose, 자세한 정보 출력 |
-r | 재귀적으로 하위 디렉터리 까지 복사(단 전송시 타임스탬프나 permission을 보존하지 않는다) |
-l | 심볼릭 링크 보존 |
-p | 파일 퍼미션 보존 |
-t | 타임스탬프 보존 |
-g | 그룹 속성 보존 |
-o | 소유자 속성 보존 |
-D | Device 관련 파일과 특수 파일 (FIFO, Named Socket) 복사 |
-z | 데이터를 압축해 전송 |
-h | human-readable, output numbers in a human-readable format |
-a | archive mode. -rlptgoD 옵션을 적용한 것과 동일 |
-d | source의 디렉터리 구조만 복사하고 안의 파일은 복사하지 않는다. |
--progress | 전송시 진행 내역 볼 수 있다. |
--include/--exclude | 포함/미포함 파일 설정 |
--delete | source에 존재하지 않는 destination 안의 파일들을 삭제하는 옵션. |
--dry-run | rsync를 수행하기 전 전송할(또는 삭제할) 파일 목록을 확인할 수 있다. |
--exclude |
특정 파일이나 디렉토리를 제외할 수 있다. 반드시 상대경로로 설정해야 한다.
ex) $ rsync --exclude 'A' # A 디렉토리 제외 $ rsync --exclude 'A/*' # A 디렉토리는 복사, A 하위 content는 제외 |
--exclude-from |
--exclude 패턴을 여러개 적용하고 싶을 때 사용한다. 옵션을 주고, --exclude 하려는 디렉토리나 파일을 기재한 파일 경로로 설정한다.
마찬가지로, 파일의 내용은 상대경로 이다. A, B 폴더를 목록에서 제외하려면 다음과 같이 txt 파일을 만들고, ex) exclude-list.txt A B --exclude-from 옵션을 부여한다. ex) $ rsync --exclude-from 'exclude-list.txt' |
- -avzh 옵션으로 가장 흔하게 사용함
댓글을 사용할 수 없습니다.