rsync --list-only 출력이 예상과 다릅니다

rsync --list-only 출력이 예상과 다릅니다

rsync 옵션이 --list-only다소 잘못된 출력을 제공하는 것 같습니다. 이것은 내 테스트 파일입니다.

~/src$ ls
lrwxrwxrwx 1 michael michael 23 Sep  5 09:19 far_symlink -> /home/michael/Documents
-rw------- 1 michael michael  0 Sep  5 09:18 file
lrwxrwxrwx 1 michael michael  4 Sep  5 09:18 near_symlink -> file

전송할 파일 목록을 원하며 심볼릭 링크가 필요하지 않으므로 다음을 사용하여 실행합니다 --list-only.

~/src$ rsync -r --no-links --list-only ./ ~/dest
drwx------          4,096 2018/09/05 09:19:05 .
lrwxrwxrwx             23 2018/09/05 09:19:05 far_symlink
-rw-------              0 2018/09/05 09:18:15 file
lrwxrwxrwx              4 2018/09/05 09:18:28 near_symlink

심볼릭 링크를 나타냅니다.~ 할 것이다양도가 가능하지만 그렇지 않습니다. 실제로 송금하는 경우:

~/src$ ls ~/dest
drwx------  2 michael michael 4.0K 2018-09-05 09:39:16 .
drwxr-xr-x 30 michael michael 4.0K 2018-09-05 09:44:49 ..

~/src$ rsync -r --no-links ./ ~/dest
skipping non-regular file "far_symlink"
skipping non-regular file "near_symlink"

~/src$ ls ~/dest
drwxr-xr-x 30 michael michael 4.0K 2018-09-05 09:44:49 ..
-rw-------  1 michael michael    0 2018-09-05 09:48:10 file
drwx------  2 michael michael 4.0K 2018-09-05 09:48:10 .

심볼릭 링크가 전송되지 않았습니다.

그래서 그것은 부정직한 것으로 보입니다 --list-only. 실제로 전송되는 파일 목록을 얻을 수 있는 방법이 있습니까(원격 SSH 서버 등에 접속할 필요 없이)? 내가 무엇을 놓치고 있나요?

우분투 18.04를 사용하고 있습니다. 그 외 세부 사항:

$ uname -a
Linux ubuntu 4.15.0-33-generic #36-Ubuntu SMP Wed Aug 15 16:00:05 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ rsync --version
rsync  version 3.1.2  protocol version 31
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes, prealloc

업데이트: 저의 잘못된 용어를 용서해주세요. 나는후보자양도하고 뭐고~ 할 것이다양도되었습니다. 내 질문은 왜 심볼릭 링크가 고려되는지입니다.후보자전송(따라서 나열 --list-only)되지만 목적지의 조건에 관계없이 분명히 전송되지 않으며 (제 생각에는) 명시적으로 제외됩니다 no-links.

답변1

--list-only옵션은 파일을 인식하지 못합니다~ 할 것이다전송된 파일만 인식합니다.후보자이전하기 위해서. 여기에서 볼 수 있습니다.

touch aa bb cc; ln -s cc dd
rsync --list-only --no-links -a ?? /tmp
rsync -av ?? /tmp

rsync --list-only --no-links -a ?? /tmp

최종 출력rsync

-rw-r--r--              0 2018/09/05 16:35:01 aa
-rw-r--r--              0 2018/09/05 16:35:01 bb
-rw-r--r--              0 2018/09/05 16:35:01 cc
lrwxrwxrwx              2 2018/09/05 16:35:01 dd -> cc

rsync파일이 전송되었으며 소스에서 변경되지 않은 상태로 유지되는 마지막 파일을 고려하십시오 . --list-only전송해야 할 파일을 표시하면 아무 것도 나열되지 않습니다 . 그러나 고려해야 할 소스 파일 세트는 여전히 표시됩니다.

보고할 파일 세트를 관리하기 위해 대상의 컨텍스트를 사용하려면 다음을 사용하십시오.--dry-run --info=name

rsync --dry-run --info=name --archive --no-links ?? /tmp

또는 생성된 것과 유사한 출력을 원하는 경우 --list-only(구체적으로 첫 번째 문자의 항목 유형 생략)

rsync --dry-run --info=name --out-format='%B%16l %t %f' --archive --no-links ?? /tmp

초기 출력

skipping non-regular file "dd"
rw-r--r--               0 2018/09/05 16:42:30 aa
rw-r--r--               0 2018/09/05 16:42:30 bb
rw-r--r--               0 2018/09/05 16:42:30 cc

파일 복사 후 후속 출력

skipping non-regular file "dd"

관련 정보