혼란스러운 오류 메시지와 함께 rsync가 실패합니다.

혼란스러운 오류 메시지와 함께 rsync가 실패합니다.

Bash 스크립트(Arch Linux)에는 다음과 같은 rsync 명령이 있습니다.

rsync –nvaAHX --inplace --delete-delay --exclude-from="/etc/$path1/exclude-list-$configName.txt" "$new_snap/" "$BACKUPDIR"

다음 오류로 인해 rsync 명령이 실패합니다.

rsync: --delete does not work without --recursive (-r) or --dirs (-d).

물론 "a"가 "r"을 의미하기 때문에 이 메시지는 오해의 소지가 있습니다.

rsync 명령에서 "--delete-delay" 옵션을 제거하면 다음과 같은 다른 오류가 발생합니다.

rsync: link_stat "/some/path/–aAHX" failed: No such file or directory (2)

"/some/path"에 표시된 값은 현재 작업 디렉터리입니다. 현재 디렉터리를 변경하면 오류 메시지의 값도 변경됩니다. 그러나 "-aAHX" 옵션이 경로의 일부에 추가되는 이유는 혼란스럽습니다.

컴퓨터는 완전히 업데이트된 Arch Linux 시스템입니다. 저도 방금 다시 시작했어요.

4.13.11-1-ARCH #1 SMP PREEMPT Thu Nov 2 10:25:56 CET 2017 x86_64 GNU/Linux

rsync 프로그램 위치:

# which rsync
/usr/bin/rsync

테스트 스크립트는 다음과 같습니다.

#!/bin/bash

path1=xyz
configName=root
new_snap=/.snapshots/1/snapshot
BACKUPDIR=/backup/$configName

echo "showing exclude file contents:"

cat "/etc/$path1/exclude-list-$configName.txt"

echo

echo rsync –nvaAHX --inplace --delete-delay --exclude-from="/etc/$path1/exclude-list-$configName.txt" "$new_snap/" "$BACKUPDIR"

rsync –nvaAHX --inplace --delete-delay --exclude-from="/etc/$path1/exclude-list-$configName.txt" "$new_snap/" "$BACKUPDIR"

다음은 "/etc/$path/exclude-list-$configName.txt" 파일의 내용입니다.

"dev/*"
"proc/*"
"sys/*"
"tmp/*"
"run/*"
"mnt/*"
"media/*"
"lost+found"
".trash*/*"
".Trash*/*"

다음은 스크립트가 전혀 없는 몇 가지 테스트입니다. 나는 이것이 매우 혼란스럽다고 생각한다.

# mkdir adir
# mkdir bdir
# touch adir/afile1
# touch adir/afile2

# ls -la adir/
total 0
drwxr-x--x 1 root root           24 Nov 12 02:21 .
drwxr-xr-x 1 user user         2080 Nov 12 02:28 ..
-rw-r----- 1 root root            0 Nov 12 02:21 afile1
-rw-r----- 1 root root            0 Nov 12 02:21 afile2
# ls -la bdir/
total 0
drwxr-x--x 1 root root            0 Nov 12 02:21 .
drwxr-xr-x 1 user user         2080 Nov 12 02:28 ..


# rsync -nva adir/ bdir
sending incremental file list
./
afile1
afile2

sent 93 bytes  received 25 bytes  236.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

# rsync -nva /home/user/adir/ /home/user/bdir
sending incremental file list
./
afile1
afile2

sent 93 bytes  received 25 bytes  236.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)


# rsync –nvaAHX --inplace --delete-delay --exclude-from=/root/exclude-list-root.txt /home/user/adir/ /home/user/bdir/
rsync: --delete does not work without --recursive (-r) or --dirs (-d).
rsync error: syntax or usage error (code 1) at main.c(1567) [client=3.1.2]
# rsync –nvaAHX --inplace --delete-delay /home/user/adir/ /home/user/bdir/
rsync: --delete does not work without --recursive (-r) or --dirs (-d).
rsync error: syntax or usage error (code 1) at main.c(1567) [client=3.1.2]
# rsync –nvaAHX --inplace /home/user/adir/ /home/user/bdir/
rsync: link_stat "/home/user/–nvaAHX" failed: No such file or directory (2)
skipping directory .
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
# rsync –nvaAHX /home/user/adir/ /home/user/bdir/
rsync: link_stat "/home/user/–nvaAHX" failed: No such file or directory (2)
skipping directory .
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
# rsync –nva /home/user/adir/ /home/user/bdir/
rsync: link_stat "/home/user/–nva" failed: No such file or directory (2)
skipping directory .
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

답변1

nin 앞의 대시는 –nvaHAX일반적인 대시가 아니라 약간 긴 em 대시(또는 하이픈)입니다.

"스마트" 편집기나 워드 프로세싱 프로그램에서 복사하여 붙여넣고 특정 문자를 해당 인쇄 문자로 바꾸는 경우 이런 일이 발생할 수 있습니다.

내 시스템에서 명령의 첫 번째 부분을 복사하여 붙여 넣으면 다음과 같은 결과가 나타납니다.

$ rsync –nva adir/ bdir/              
rsync: link_stat "/tmp_mfs/shell-ksh.D1Mq1Xht/\#342\#200\#223nva" failed: No such file or directory (2)
skipping directory .
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

보시다시피 내 터미널에는 사용자의 터미널과 약간 다른 오류 메시지가 표시되며 대시가 실제로 유니코드 문자(또는 이와 유사한 문자 인코딩에 대해 잘 모릅니다)임을 보여줍니다.

답변2

전체 이상한 문제는 rsync 옵션 앞의 문자로 인해 발생합니다. 문제의 캐릭터는 다음과 같습니다(어떻게 거기까지 왔는지는 모르겠습니다).


# printf – | od -An -vtu1
226 128 147

올바른 문자는 표준 대시(빼기 기호)인 다음 문자입니다.

-
# printf - | od -An -vtu1
45

관련 정보