Не работает каталог rsync exclude

Я запускаю Fedora 17 64-bit, а rsync --exclude=/home/ben/<dir> работает не так, как ожидалось.

Я пытаюсь rsync мой домашний каталог на флэш-накопитель, но я хочу исключить, конечно, каталоги, в которых хранятся файлы кеша и файлы сборки. Это команда, которую я использую:

 rsync --exclude=/home/ben/build/ --exclude=/home/ben/.ccache -arv /home/ben home-ben/ 

Однако содержимое из ~/build и ~/.ccache копируется rsync . Что я делаю не так?

  • Любые проблемы с использованием `rsync` в ситуации с несколькими тайм-аутами
  • Почему rsync обрезает этот путь?
  • Как rsync файлы между двумя пультами с явным портом и разными именами пользователей?
  • Использование Rsync для SSH и поиска файлов
  • Могу ли я установить значения по умолчанию для rsync в режиме без демона?
  • Есть ли какой-либо параметр rsync для показа в конце внесенных изменений?
  • Переместить файлы и удалить каталоги с помощью rsync?
  • Rsync пропускает зашифрованный (но установленный) домашний каталог
  • 3 Solutions collect form web for “Не работает каталог rsync exclude”

    Глобальные правила фильтра rsync начинающиеся с ведущего / , привязаны к корню передачи. Цитата из раздела «INCLUDE / EXCLUDE PATTERN RULES» на странице руководства:

    если шаблон начинается с /, то он привязан к определенному месту в иерархии файлов, в противном случае он сопоставляется с концом пути. Это похоже на ведущее ^ в регулярных выражениях. Таким образом, «/ foo» будет соответствовать имени «foo» в «корневом каталоге передачи» (для глобального правила) или в каталоге файла слияния (для правила для каждого каталога).

    В вашей команде ( rsync ... -arv /home/ben home-ben/ ) файл /home/ben/foo будет перенесен в home-ben/ben/foo . Корень передачи – home-ben а правильный путь фильтра – /ben/foo . Таким образом,

    • для соответствия /home/ben/.ccache вам нужен путь фильтра /ben/.ccache
    • для соответствия /home/ben/build/ вам нужен путь фильтра /ben/build/

    Более подробное объяснение можно найти в разделе «ANCHORING INCLUDE / EXCLUDE PATTERNS» страницы руководства rsync(1) .


    Обратите внимание, что просто оставить лидирующий / не обязательно то, что вы хотите. Повторное цитирование с той же страницы man-страницы:

    Неквалифицированное «foo» будет соответствовать имени «foo» в любом месте дерева, потому что алгоритм применяется рекурсивно из верхнего положения; он ведет себя так, как будто каждый компонент пути получает поворот в конце имени файла. Даже unanchored «sub / foo» будет соответствовать в любой точке иерархии, где «foo» был найден в каталоге с именем «sub». См. Раздел «АНКЕРЫ ВКЛЮЧЕНИЯ / ИСКЛЮЧЕНИЯ ПАТЕНТОВ» для полного обсуждения того, как указать шаблон, который соответствует корню передачи.

    Таким образом, шаблон фильтра build/ будет соответствовать каталогу сборки в любом месте /home/ben , even /home/ben/many/sub/directories/build/ .

    Я думаю, что ваши пути exclude должны быть относительно исходного пути. Вы можете попробовать это вместо этого?

     rsync --exclude=build/ --exclude=.ccache -arv /home/ben home-ben/ 

    Вот тест, для сравнения:

     /tmp$ tree src dest src ├── a └── b dest └── foo/ /tmp$ rsync -nav --exclude /tmp/src/b /tmp/src /tmp/dest sending incremental file list src/ src/a src/b $ rsync -nav --exclude b /tmp/src /tmp/dest sending incremental file list src/ src/a 

    У меня была эта проблема в скрипте (я не знаю, если это ваш случай). Я был потому, что использовал эту команду в скрипте, и я использовал sh вместо bash. проверьте shebang в начале вашего скрипта.

    Interesting Posts

    Запуск и мониторинг процесса с помощью CRON

    Как проверить температуру в Linux?

    Включить внешний дисплей на консоли FreeBSD

    x11vnc просто удаленная клавиатура без экрана

    Стандартная папка установки соглашения для GitEye на Linux и как ее запустить

    Как включить ярлыки клавиатуры яркости монитора на Samsung 90X3A?

    Перечислите папки размером более 10G и отправьте их соответствующим владельцам об использовании

    Исправление ulimit: открытые файлы: невозможно изменить предел: операция не разрешена

    Может ли GRUB2 совместно использовать системный раздел EFI с Windows?

    Как заставить убийцу OOM регистрироваться в / var / log / messages, когда он убивает какой-либо процесс?

    Преобразование абсолютной символической ссылки в относительную символическую ссылку с помощью простой команды Linux

    как легко удалить пакеты, перечисленные в истории?

    OpenVPN: Как изменить параметры server.conf и client.conf, чтобы указать на сгенерированные ключевые файлы?

    virtualenv type tool для apt-get?

    USB-сетевой адаптер USB 3.0 периодически отключается от сети

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