2

Я пытаюсь синхронизировать все файлы PHP на другой компьютер через ssh через rsync . Тем не менее, он никогда не копирует файлы. Я на Mac OSX Mountain Lion (10.8.4)

Вот что я попробовал:

rsync --rsh=ssh --verbose --remove-source-files --recursive --exclude=* --include='*.php' $HOME/ pi@raspberrypi:~

building file list ... done
sent 36 bytes  received 20 bytes  112.00 bytes/sec
total size is 0  speedup is 0.00

или же

rsync --verbose --remove-source-files -e "ssh" $HOME/*.php pi@raspberrypi:~
rsync: link_stat "/Users/simonjackson/*.php" failed: No such file or directory (2)

sent 21 bytes  received 20 bytes  82.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]

Есть мысли по этому поводу?

2 ответа2

1

Правильный синтаксис будет:

rsync --include="*.php" --filter="-! */" source dest

Проблема с обычным правилом exclude="*" состоит в том, что оно исключает все, даже каталоги, поэтому вы не можете ничего включить, поскольку все файлы и папки будут снова исключены - имеет смысл?

Чтобы объяснить правило --filter здесь, посмотрите на страницу руководства:

А ! указывает, что включение / исключение должно вступить в силу, если шаблон не соответствует. Например, "-! */" исключает все не-каталоги.

Это именно то, что мы хотим здесь, так как мы хотим исключить все другие файлы, проще говоря.

Также помните, что --exclude=* работает только в некоторых оболочках, например, в Bash. В Zsh он попытается развернуть * перед выполнением команды. Это означало бы, что rsync получит неправильный список включения / исключения. Поэтому, чтобы быть в безопасности, всегда указывайте шаблоны, чтобы предотвратить их преждевременное расширение.

Для получения дополнительной информации см .: Уловки с правилами фильтра rsync.

-1

Эта тема может вам помочь:rsync использует regex для включения только некоторых файлов

Кажется, что rsync --include и --exclude не понимают регулярное выражение

С Уважением,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .