함수 args를 사용한 rsync [닫기]

함수 args를 사용한 rsync [닫기]

다운로드할 파일 및/또는 디렉터리를 지정하기 위해 rsync에 매개 변수를 전달하는 데 사용할 수 있는 BASH 함수를 만들려고 합니다. 서버에 다운로드하려는 다음 파일이 있다고 가정해 보겠습니다. 공백과 밑줄은 의도적인 것입니다. 파일에 공백이 있는 것이 중요합니다.

dir1/file 1 with really long name.txt
dir1/file 2_with_shorter_name.txt

현재 나는 다음을 가지고 있습니다 :

CMD="ssh -i~/.ssh/some_key"
LOGIN="[email protected]"

dl()
{
    rsync -Pzr --compress-level=9 -e "$CMD" "$LOGIN":"$@" ./
}

이 두 파일을 다운로드하기 위해 다음과 같이 이 함수를 호출하려고 합니다.

dl "dir1/file\ *"

dl(별표를 내 함수에 전달하여 rsync를 통해 서버에 전달할 수 있기를 정말로 원합니다 )

그러나 rsync는 다음 오류와 함께 종료됩니다.

receiving incremental file list
rsync: link_stat "/home/user/dir1/file\ *" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors (code 23) at main.c(1655) [Receiver=3.1.1]
rsync: [Receiver] write error: Broken pipe (32)

제가 여기서 인용한 내용에 뭔가 문제가 있는 것 같습니다... 제가 뭘 잘못하고 있는지 아는 사람 있나요? 함수가 아닌 자체적으로 rsync를 호출하면 예상대로 작동합니다.

rsync -Pzr --compress-level=9 -e "ssh -i~/.ssh/some_key" "[email protected]":"dir1/file\ *" ./

고쳐 쓰다:

의 출력에는 ssh -v다음 줄이 있습니다.

rsync --server --sender -vrze.iLsfx --compress-level=9 . dir1/file\\ *

놀랍게도 이제 명령이 실제로 마법처럼 작동하고 파일이 다운로드되고 있습니다. 혹시 제가 예전에 지나갔던 길에 오타를 낸 건 아닐까요? 아쉽게도 .bash_history지금은 해당 항목이 삭제되어 알 수가 없습니다. 어쨌든 rsync 명령이 올바르게 보입니까?

관련 정보