SW/리눅스

Linux : Rsync로 파일, 디렉토리 제외 방법, 예제, 명령어

얇은생각 2021. 6. 12. 07:30
반응형

Rsync는 원격 셸을 통해 두 위치 간에 파일과 폴더를 동기화하는 빠르고 다양한 명령줄 유틸리티입니다.

Rsync를 사용하면 데이터를 미러링하고 증분 백업을 생성하고 시스템 간에 파일을 복사할 수 있습니다. 데이터를 복사할 때 이름 또는 위치에 따라 하나 이상의 파일 또는 디렉터리를 제외할 수 있습니다.

이 튜토리얼에서는 rsync로 파일 및 디렉터리를 제외하는 방법을 보여드리겠습니다.

 

 

Linux : Rsync로 파일, 디렉토리 제외 방법, 예제, 명령어

 

 

시작하기 전

 rsync의 작동 방법에 대한 기본적인 지식을 가지고 있어야 합니다.  

아래 예에서는 -a, 옵션과 사용자 동기화를 수행합니다. 이렇게 하면 rsync가 디렉토리를 재귀적으로 동기화하고, 특수 및 차단 장치를 전송하며, 심볼 링크, 수정 시간, 그룹, 소유권 및 사용 권한을 유지합니다.

파일 또는 디렉터리를 제외할 경우 원본 디렉터리에 대한 상대 경로를 사용해야 합니다.

제외할 파일 및 디렉터리를 지정하는 두 가지 옵션이 있습니다.

- 명령줄에서 --exclude 옵션을 사용합니다.

- 파일에서 --exclude-from 옵션을 사용합니다.

 

 

 

특정 파일을 제외

특정 파일을 제외하려면 파일의 상대 경로를 --exclude 옵션에 전달합니다. 

다음 예에서는 src_directory/file.txt는 전송되지 않습니다.

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

 

 

 

특정 디렉터리를 제외

특정 디렉터리를 제외하는 것은 파일을 제외하는 것과 동일하며 아래 표시된 것처럼 상대 경로를 디렉터리에 --exclude 옵션에 전달하기만 하면 됩니다.

rsync -a --exclude 'dir1' src_directory/ dst_directory/

 

 

디렉토리 내용을 제외하지만 디렉토리 자체는 제외하지 않으려면 dir1 대신 dir1/*를 사용하십시오.

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

 

 

 

여러 파일 또는 디렉터리를 제외

여러 파일 또는 디렉터리를 제외하려면 다중 --제외 옵션을 지정하십시오.

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

 

 

단일 --제외 옵션을 사용하려면 다음과 같이 쉼표로 구분된 {}에서 제외할 파일 및 디렉터리를 나열할 수 있습니다.

rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

 

 

제외할 파일 및/또는 디렉토리의 수가 많은 경우, 파일에서 제외할 파일 및 디렉토리를 지정하고 --exclude-from 옵션에 파일을 전달할 수 있습니다.

아래 명령은 위의 명령과 정확히 동일합니다.

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/

 

# exclude-file.txt

file1.txt
dir1/*
dir2

 

 

 

패턴을 기준으로 여러 파일 또는 디렉터리를 제외

rsync를 사용하면 파일 또는 디렉터리 이름과 일치하는 패턴을 기준으로 파일 및 디렉터리를 제외할 수도 있습니다.

 예를 들어, 실행할 모든 .jpg 파일을 제외하려면 다음과 같이 하십시오.

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

 

 

특정 패턴과 일치하는 파일 및 디렉터리를 제외한 다른 모든 파일 및 디렉터리를 제외하는 것이 더 어렵습니다. .jpg로 끝나는 파일을 제외한 다른 모든 파일과 디렉터리를 제외하려고 합니다.

한 가지 옵션은 다음 명령을 사용하는 것입니다.

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

 

 

포함/제외 옵션을 여러 개 사용하는 경우 첫 번째 일치 규칙이 적용됩니다.

--https='*.jpg' - 먼저 모든 .jpg 파일을 포함합니다.

--filename='*/' - 그런 다음 src_directory 디렉토리에 모든 디렉토리를 포함합니다. rsync를 사용하지 않으면 최상위 디렉토리에만 *.jpg 파일이 복사됩니다.

-m - 빈 디렉터리를 제거합니다.

 

 

다른 옵션은 rsync하기 위해 find 명령의 출력을 파이프로 연결하는 것입니다.

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

 

 

-printf %P\\0\n - 파일 경로에서 src_directory/를 제거합니다.

--files-from=-는 표준 입력의 파일(찾기 명령에서 전달된 파일)만 포함합니다.

반응형