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
,这样所有名称前面都加上“./”时,它仍然不起作用。
关于这类问题有一些讨论,例如这个,但他们没有谈论使用通配符之类的东西。然而,他们确实激励我去尝试最终奏效的方法。