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/
и это работает (по крайней мере на Ubuntu 12.04 с протоколом rsync 3.09 версии 30).
Причина? что-то связанное с логикой, которую rsync использует для распознавания хостов. Прямые слеши, которым предшествуют слова, похоже, не считаются хостами. Странно, но когда я использовал find
, так что все имена имели префикс "./", это все равно не работало.
Есть несколько дискуссий по этому вопросу,например это, но они не говорят об использовании wild cards и т. п. Однако они вдохновили меня попробовать то, что в итоге сработало.