Как исключить несколько каталогов с rsync?
Я пытаюсь сделать резервную копию моего домашнего каталога с помощью rsync, и я хочу исключить некоторые из каталогов, содержащих нежелательные. Я хочу специально исключить /home/ben/.ccache
а также /home/ben/build
, К сожалению, документация для rsync была информационной перегрузкой и не ответила на мой вопрос. Вот что я попробовал:
rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/
Как правильно это сделать?
3 ответа
ОК, я чувствую себя действительно глупо. Еще до того, как я отправил этот вопрос, мой друг показал мне, как это сделать, и это действительно просто. Чтобы исключить несколько каталогов, вы просто используете несколько --exclude=path
переключатели. Итак, моя команда выше написана правильно:
rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
Если необходимо исключить несколько каталогов и / или файлов, создайте текстовый файл и используйте --exclude-from
переключатель. Сделайте файл с именем exclude_me.txt
и в нем перечислите свои исключения. Пример (/home/ben/exclude_me.txt
):
.ccache
build
.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/