rsync с использованием функции args

Я пытаюсь создать функцию BASH, которую я могу использовать для передачи аргументов в rsync, чтобы указать файлы и / или каталоги для загрузки. Предположим, что у сервера есть следующие файлы, которые я хотел бы загрузить (пробелы и подчеркивания преднамеренно … важная часть состоит в том, что в них есть пробелы):

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

В настоящее время у меня есть следующее:

 CMD="ssh -i~/.ssh/some_key" LOGIN="user@server.com" 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" "user@server.com":"dir1/file\ *" ./ 

ОБНОВИТЬ:

Выходной сигнал ssh -v имеет следующую строку:

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

К моему удивлению, команда на самом деле магически работает сейчас, и файлы загружаются. Может, у меня была опечатка раньше на пути, который я проходил? К сожалению, запись .bash_history была удалена, поэтому я не могу сказать. В любом случае, эта команда rsync выглядит правильно?

Linux и Unix - лучшая ОС в мире.