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

108

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

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

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

    
задан Freedom_Ben 16.07.2013 в 01:53
источник

3 ответа

144

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

rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
    
ответ дан Freedom_Ben 16.07.2013 в 01:53
источник
73

При наличии нескольких каталогов и / или файлов для исключения, создайте текстовый файл и используйте переключатель --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

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

    
ответ дан user228759 19.05.2014 в 17:13
50

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

rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/
    
ответ дан György Ráth 18.09.2014 в 10:59