Я пытаюсь сделать резервную копию моего домашнего каталога с помощью rsync, и я хочу исключить некоторые из каталогов, содержащих нежелательные. Я хочу специально исключить /home/ben/.ccache
и /home/ben/build
. К сожалению, документация для rsync была информационной перегрузкой и не ответила на мой вопрос. Вот что я попробовал:
rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/
Как правильно это сделать?
command-line
rsync
Freedom_Ben
источник
источник
a
подразумеваетсяr
:)-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
Ответы:
ОК, я чувствую себя действительно глупо. Еще до того, как я отправил этот вопрос, мой друг показал мне, как это сделать, и это действительно просто. Чтобы исключить несколько каталогов, вы просто используете несколько
--exclude=path
переключателей. Итак, моя команда выше написана правильно:источник
-a
включает в себя-r
так-ar
избыточна.Если необходимо исключить несколько каталогов и / или файлов, создайте текстовый файл и используйте
--exclude-from
переключатель. Сделайте файл с именемexclude_me.txt
и в нем перечислите ваши исключения. Пример (/home/ben/exclude_me.txt
):Тогда ваш rsync будет выглядеть примерно так:
Это некоторая информация о правилах фильтрации, которая может помочь:
/dir/
значит исключить корневую папку/dir
/dir/*
означает получить корневую папку,/dir
но не содержимоеdir/
означает исключить любую папку в любом месте, где содержится имяdir/
Исключенные примеры:
/dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cf
означает пропуск файлов, которые начинаютсяcf
в любой папке внутри/var/spool/lpd
Также см. Раздел правил фильтрации на странице руководства.
источник
Вы также можете исключить несколько путей в фигурных скобках:
источник
IFS=$'\n'; rsync -arv $(printf '.ccache\nbuild\n' | sed 's/^/--exclude=/g') /home/ben /media/ben/thumbdrive/
. Или вы можете просто использовать несколько--exclude
аргументов, которые вам придется вводить вручную.