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

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

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

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

184
задан 29.03.2020, 07:05

3 ответа

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

rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
238
ответ дан 29.03.2020, 07:06
  • 1
    К вашему сведению для более поздних путешественников, похоже, что рассматриваемый комментарий @FreeSoftwareServer был удален. tl; доктор: используйте относительные пути – Saeedses 29.03.2020, 07:06
  • 2
    Полный путь сделал не работа для меня (определенный каталог не был тихо исключен), тогда как путь относительно исходного каталога работал правильно. Возможно, I' m пропавшие без вести чего-то, но я был бы осторожен относительно @FreeSoftwareServers' утверждение это полные пути всегда работает. – ArtleMaks 29.03.2020, 07:07
  • 3
    Вопреки тому, чему верит FreeSoftwareServers, исключить путь относительно исходного пути, НЕ/. Так, чтобы комментарий был категорически ложью и привел к отказам, если Вы следуете за ним. Лучшая стратегия состоит в том, чтобы кончить, продвижение / в Вашем исключает для предотвращения этого типа умственной ошибки. Если источник, говорят,/home/me и если Вы исключаете ='/mydir/' это исключает каталог mydir в/home/me, то есть, это исключает/home/me/mydir НЕ/mydir/в/. It' s неудачный я can' t или downvote или редактирование, которые комментируют с тех пор it' s технически неправильно и введет в заблуждение. – David McClelland 29.03.2020, 07:07
  • 4
    Если you' ре, немое тогда так, является мной и 179 другими upvoters! – Sergey 29.03.2020, 07:07
  • 5
    К вашему сведению: опция -a включает -r, таким образом -ar избыточно. – Hoàng Long 29.03.2020, 07:08

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

  • [ 1125]

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

108
ответ дан 29.03.2020, 07:06
  • 1
    Это - блестящий ответ! – Nino Škopac 29.03.2020, 07:06
  • 2
    It' s важный, чтобы отметить, что корневая папка означает корень передачи не корневой каталог. – Steffen Winkler 29.03.2020, 07:06

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

rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/
85
ответ дан 29.03.2020, 07:06
  • 1
    Причина это работает, из-за " Фигурная скобка Expansion" в случае, если любой хотел посмотреть на детали. – notmrkyle 29.03.2020, 07:07
  • 2
    И don' t используют ' ' как - исключают =' .gvfs' – wanovak 29.03.2020, 07:07
  • 3
    Никакое пространство после запятой. Изученный, что твердое слишком рџ - – user1765369 29.03.2020, 07:08
  • 4
    это работает приятно, просто не под sh, только под ударом, я узнал " твердый way" – Peter Mortensen 29.03.2020, 07:08

Теги

Похожие вопросы