Я использую rsnapshot и хочу исключить каталог по абсолютному пути.

Я добавил в rsnapshot.conf exclude /home/user/data rsnapshot будет использовать эту команду rsync:

/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    --exclude=/home/user/data /home \
    /backupdir/hourly.0/localhost/

и он работает, он исключает каталог /home/user/data но мне не ясно, почему он работает. Чтение man-страниц rsync (и, например, этого ответа https://askubuntu.com/a/349625) исключает / включает шаблоны, которые начинаются с / являются, привязаны к корню передачи, поэтому я думал, что это не удастся, потому что это попытаться исключить

/home/home/user/data

Может кто-нибудь прояснить мне этот момент?
Как правильно исключить каталог, используя абсолютный путь?

Спасибо за помощь

1 ответ1

0

Я знаю, что это старый, но только для записи ...

--Exclude указывает шаблон, а не местоположение в дереве каталогов "/home". rsync ничего не добавит к этому шаблону. поэтому "/home" не добавляется / не дублируется, потому что вы указали --relative.

если вы добавите -iv к вашей команде rsync, rsync перечислит все каталоги и файлы в "/home", которые он будет обрабатывать. Вы заметите, что любой элемент каталога с "/home/user/data" будет скрыт из-за шаблона исключения "/home/user/data/"

если вы использовали --exclude = data, то все элементы dir с "data" в их имени будут опущены. так, например, /home /user /data, или /home /user2 /data, или /home /user3 /data, также будут опущены. так как у всех есть образец "данные" в них.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .