rsync 제외 *2021*은 작동하지만 *2020*은 작동하지 않음

rsync 제외 *2021*은 작동하지만 *2020*은 작동하지 않음

스마트폰에서 사진을 백업하기 위해 수년 동안 사용해 온 rsync 명령이 있습니다. --exclude *2021*전환 하지 않는 한 잘 작동합니다 .--exclude *2020*

내 실제 시나리오에서 오류 메시지는 다음과 같습니다.

예기치 않은 로컬 인수: /media/sciuro/BCKP_WD4T/Fotos/2021/CELULAR/ 인수가 원격 파일/디렉토리인 경우 앞에 콜론(:)을 붙입니다. rsync 오류: main.c(1375)의 구문 또는 사용법 오류(코드 1) [Receiver=3.1.2]

내 테스트 시나리오에서 오류 메시지는 다음과 같습니다.

rsync: 변경 디렉터리 "/home/sciuro//home/sciuro/2021" 실패: 해당 파일 또는 디렉터리가 없습니다. (2) 오류: 여러 파일을 복사할 때 대상은 디렉터리여야 합니다. rsync 오류: 입력/출력 파일, 디렉터리 선택 오류(코드 3) main.c(641)에 위치 [Receiver=3.1.2]

이러한 오류는 --exclude *2020*소스 및 대상 파일/디렉터리와 독립적으로만 발생합니다. 아래의 테스트 시나리오를 참조하세요.

여기서 정확히 무엇이 잘못되었는지 설명해 줄 수 있는 사람이 있나요?

해결책은 다음 사이에 패턴을 삽입하는 것입니다 '.--exclude '*2020*'

해석되어 이 오류를 일으키는 rsync의 내부 2020또는 인코딩이 있는 것 같습니다 .20


실제 장면

이 방법으로 실행하면 오류가 보고되지 않습니다.

rsync -rtpogvlHbis --ignore-existing --progress --size-only --stats rsync://localhost:6010/root/sdcard/DCIM/Camera/ /media/sciuro/BCKP_WD4T/Fotos/2020/CELULAR/ -n --exclude *2021*
receiving incremental file list
.d...p..... ./
>f+++++++++ IMG_20201228_114334605.jpg
(...)

Number of files: 78 (reg: 77, dir: 1)
Number of created files: 77 (reg: 77)
Number of deleted files: 0
Number of regular files transferred: 77
Total file size: 4,191,721,673 bytes
Total transferred file size: 4,191,721,673 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 1,898
File list generation time: 0.013 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 270
Total bytes received: 2,147

sent 270 bytes  received 2,147 bytes  4,834.00 bytes/sec
total size is 4,191,721,673  speedup is 1,734,266.31 (DRY RUN)

이것은 아니다

rsync -rtpogvlHbis --ignore-existing --progress --size-only --stats rsync://localhost:6010/root/sdcard/DCIM/Camera/ /media/sciuro/BCKP_WD4T/Fotos/2021/CELULAR/ -n --exclude *2020*
Unexpected local arg: /media/sciuro/BCKP_WD4T/Fotos/2021/CELULAR/
If arg is a remote file/dir, prefix it with a colon (:).
rsync error: syntax or usage error (code 1) at main.c(1375) [Receiver=3.1.2]

테스트 시나리오

이것은 최소한의 테스트입니다.

소스 디렉터리 및 파일(대상 디렉터리가 비어 있음)

sciuro@toca:~$ ls test/origin/
Captura de tela de 2020-02-10 21-48-32.png
Captura de tela de 2020-04-02 21-14-44.png
Captura de tela de 2021-01-16 13-48-26.png
Captura de tela de 2021-01-16 13-48-27.png

1° 테스트: 목적지 home/sciuro/2020/+--exclude *2021*

sciuro@toca:~$ rsync -rv /home/sciuro/test/origin/ home/sciuro/2020/ --exclude *2021* -n
sending incremental file list
created directory home/sciuro/2020
./
Captura de tela de 2020-02-10 21-48-32.png
Captura de tela de 2020-04-02 21-14-44.png
    
sent 144 bytes  received 64 bytes  416.00 bytes/sec
total size is 2,443,343  speedup is 11,746.84 (DRY RUN)

2° 테스트[실패]: 목적지 home/sciuro/2021/+--exclude *2020*

sciuro@toca:~$ rsync -rv /home/sciuro/test/origin/ home/sciuro/2021/ --exclude *2020* -n
    sending incremental file list
    rsync: change_dir "/home/sciuro//home/sciuro/2021" failed: No such file or directory (2)
    ERROR: destination must be a directory when copying more than 1 file
    rsync error: errors selecting input/output files, dirs (code 3) at main.c(641) [Receiver=3.1.2]

3° 테스트: 목적지 home/sciuro/2021/+--exclude *2021*

sciuro@toca:~$ rsync -rv /home/sciuro/test/origin/ home/sciuro/2021/ --exclude *2021* -n
sending incremental file list
created directory home/sciuro/2021
./
Captura de tela de 2020-02-10 21-48-32.png
Captura de tela de 2020-04-02 21-14-44.png

sent 144 bytes  received 64 bytes  416.00 bytes/sec
total size is 2,443,343  speedup is 11,746.84 (DRY RUN)

4° 테스트[실패]: 목적지 home/sciuro/2020/+--exclude *2020*

sciuro@toca:~$ rsync -rv /home/sciuro/test/origin/ home/sciuro/2020/ --exclude *2020* -n
sending incremental file list
rsync: change_dir "/home/sciuro//home/sciuro/2020" failed: No such file or directory (2)
ERROR: destination must be a directory when copying more than 1 file
rsync error: errors selecting input/output files, dirs (code 3) at main.c(641) [Receiver=3.1.2]

해결책

 sciuro@toca:~$ rsync -rv /home/sciuro/test/origin/ home/sciuro/2021/ --exclude '*2020*' -n
    sending incremental file list
    created directory home/sciuro/2021
    ./
    Captura de tela de 2021-01-16 13-48-26.png
    Captura de tela de 2021-01-16 13-48-27.png
    
    sent 133 bytes  received 64 bytes  394.00 bytes/sec
    total size is 2,057,301  speedup is 10,443.15 (DRY RUN)

답변1

인용된 인수가 필요합니다 --exclude. 그렇지 않으면 방출 호스트에서 확장되어 작업 디렉터리에 상대적인 glob과 일치하는 로컬 파일이 전달됩니다(예: /media/sciuro/BCKP_WD4T/Fotos/2021/CELULAR/"실제" 시나리오에서).

rsync -rtpogvlHbis --ignore-existing --progress --size-only --stats rsync://localhost:6010/root/sdcard/DCIM/Camera/ /media/sciuro/BCKP_WD4T/Fotos/2020/CELULAR/ -n --exclude '*2021*'

관련 정보