rsync에서 폴더를 제외하는 방법


60

NAS 드라이브에서 홈 폴더를 백업하려고합니다. 나는 이것을주고있다 :

rsync -Paz --exclude-from 'rsync-exclude.txt' /home/chris/ admin@192.168.1.65:LinuxHome

rsync-exclude.txt이 내용이 있는 곳 :

/home/chris/Downloads/*
/home/chris/Downloads/
/home/chris/Downloads/*.*

rsync (홈 폴더)를 실행하는 동일한 폴더에 있습니다.

그러나 rsync도이 폴더를 복사하려고합니다.

내가 무엇을 잘못하고 있지?

답변:


88

제외 목록에 절대 경로를 제공 하고 있습니다.

rsync를 사용하여 시작하는 모든 제외 (또는 포함!) 경로 /는 " 전송 루트 "에 고정됩니다 .

이 경우의 전근은 /home/chris입니다. 당신이했다면 :

rsync -Paz --exclude-from 'rsync-exclude.txt' / admin@192.168.1.65:

... 그런 다음 제외가 작동해야합니다 (그러나 파일 시스템의 다른 모든 것을 복사하고 있습니다 !).

당신이 당신의 동기화하려는하지만 이후 디렉토리를, 그리고 하위 디렉토리가 없다 /home/chris라는 이름은 "home/chris/Downloads", rsync일치 아무것도 발견하지 않습니다.

따라서 파일 에서 /home/chris부분을 제거 rsync-exclude.txt하십시오.

실제로 파일에 한 줄만 있으면됩니다.

/Downloads

참고 당신이 선두를 지정하지 않으면 것을 /, 그리고 당신이 다른 디렉토리라는 한 일이 "Downloads", 그 또한 제외된다. "최상위"(소스 디렉토리와 관련하여 "전송 루트"라고도 함) Downloads디렉토리 만 제외하고 싶다고 가정 하여 Leading을 원할 것 /입니다.

가장 쉬운 방법 (몇 가지 경로 만 제외)

하나의 디렉토리 만 제외해야하는 경우 다음을 수행하십시오 (별도의 파일 제외).

rsync -Paz --exclude /Downloads /home/chris/ admin@192.168.1.65:LinuxHome

다음과 같이 --exclude태그를 함께 연결할 수도 있습니다 .

rsync -Paz --exclude /Downloads --exclude '/Something Else' --exclude .hiddenFile /home/chris/ admin@192.168.1.65:LinuxHome

슬래시가 없으므로 복사 하는 모든 디렉토리 .hiddenFile에서 제외 됩니다 !

그러나 몇 가지 제외가 있다면 --exclude-from파일 과 함께하는 것이 좋습니다 .

노트

난 당신이 바로 그것을 가지고 있다고 볼 수 있지만, rsync를 새로운 사람들이해야 끝에 슬래시주의 의를/home/chris/

rsync매뉴얼 페이지 를 인용하자면 , "이름으로 디렉토리를 복사하는 것과는 반대로"이 디렉토리의 내용 복사 "를 의미하는 것으로 소스에서 후행 /을 생각할 수 있습니다."

당신이 슬래쉬 것을 중단 그래서, 당신은라는 디렉토리로 끝날 것입니다 chris, 대상 디렉토리에 들어있는 모든 것을 /home/chris(원래 제외하고는 Downloads물론 디렉토리를!).


2

이것은 눈에 더 쉬울 수 있으며 디렉토리와 구문을 제외하는 것에 대한 참고 사항입니다.

SRC='/home/username'
DST='/run/media/username/EasyStoreRT/rsync'

rsync -avrh --stats                                 \
    --log-file=/home/username/log/rsync-home.log    \
    --exclude='/username/.cache'                    \
    --exclude='/username/.local/share/Trash'        \
    $SRC \
    $DST \

해당 디렉토리와 그 안의 모든 파일은 제외됩니다. 어떤 이유로 든 rysnc는 / home / username을 /.cache에 추가하지 않았습니다. home /만이 자체적으로 고정되므로 제외 된 각 디렉토리에 / username을 추가해야했습니다.

매뉴얼 페이지에 "패턴이 /로 시작하면 파일 계층 구조의 특정 지점에 고정되어 있고, 그렇지 않으면 경로 이름의 끝과 일치합니다."라고 말합니다. 그러나 해당 계층은 소스 디렉토리의 첫 번째 디렉토리 인 것 같습니다. bash 버전 4.4.23 (1)-릴리스를 사용하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.