rsync
將檔案名稱中的冒號解釋為前面是遠端電腦名稱的指示符。當您嘗試 rsync 名稱中包含冒號的檔案時,rsync 通常會感到困惑,產生以下錯誤
The source and destination cannot both be remote.
rsync error: syntax or usage error (code 1) at main.c(1166) [Receiver=3.0.9]
或者
Unexpected remote arg: 02\:12\:43.481000"
rsync error: syntax or usage error (code 1) at main.c(1232) [sender=3.0.9]
(請注意,我的用例是一堆名稱中帶有日期的文件)
如何使用 rsync 使用通配符選擇性地傳送檔案。就像是:
rsync -avz my_special_files* othermachine:/other/path/
答案1
從父目錄執行此操作:
rsync -avz parent_directory/my_special_files* othermachine:/other/path/
並且它可以工作(至少在帶有 rsync 3.09 協定版本 30 的 ubuntu 12.04 上)。
原因?與 rsync 用於識別主機的邏輯有關。前面有字的正斜線似乎不被視為主機。奇怪的是,當我使用find
, 使名稱都帶有“./”前綴時,它仍然不起作用。
關於此類問題有一些討論,例如這個,但他們沒有談論使用通配符之類的東西。然而,他們確實激勵我去嘗試最終有效的方法。