Как исключить несколько каталогов с помощью rsync?

Я пытаюсь создать резервную копию своего домашнего каталога с помощью rsync, и я хочу исключить некоторые каталоги, содержащие ненужный мусор. Я хочу специально исключить /home/ben/.ccache и /home/ben/build. К сожалению, документация для rsync была перегружена информацией и не ответила на мой вопрос. Это то, что я пробовал:

rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/

Как правильно это сделать?

Хорошо, я чувствую себя действительно глупо. Еще до того, как я опубликовал этот вопрос, мой друг показал мне, как это сделать, и это действительно просто. Чтобы исключить несколько каталогов, вы просто используете несколько --exclude=path переключатели. Итак, моя команда, правильно написанная выше, выглядит следующим образом:

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

Примечание: Используйте относительные пути с помощью exclude. Пути указаны относительно исходного каталога, здесь /home/ben.

Если необходимо исключить несколько каталогов и/или файлов, создайте текстовый файл и используйте --exclude-from переключатель. Создайте файл с именем exclude_me.txt и в нем перечислите ваши исключения.Пример (/home/ben/exclude_me.txt):

.ccachebuild.java.gvfs.xsession-errors

Тогда ваш rsync будет выглядеть примерно так:

rsync -arv --exclude-from='/home/ben/exclude_me.txt' /home/ben /media/ben/thumbdrive/

Это некоторая информация о правилах фильтрации, которая может помочь:

  • /dir/ означает исключить корневую папку /dir
  • /dir/* означает получить корневую папку /dir но не содержание
  • dir/ означает исключить любую папку в любом месте, где имя содержит dir/

  • Примеры исключены: /dir/, /usr/share/directory/, /var/spool/dir//var/spool/lpd/cf означает пропустить файлы, начинающиеся с cf в любой папке внутри /var/spool/lpd

Также смотрите правила фильтрации раздел на справочной странице.

Вы также можете исключить несколько путей в фигурных скобках:

rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/

Просто хотел сказать, что флаг a уже подразумевает r :slight_smile: -a, --archive режим архивирования; равен -rlptgoD (no -H,-A,-X)