Я пытаюсь сделать резервную копию моего домашнего каталога с помощью 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-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/
-a
включает-r
, таким образом-ar
избыточно. – Hoàng Long 29.03.2020, 07:08