Назад | Перейти на главную страницу

Bash скрипт rsync --include-from fail

Я написал сценарий bash для резервного копирования папок и файлов с машины на наш сервер резервного копирования. Моя цель - исключить из еженедельного резервного копирования все файлы старше 6 месяцев. Для этого я использовал команду find, чтобы создать текстовый файл, который содержит пути к этим файлам.

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/Exclusions.txt "%P\n"

Затем я использовал параметр --include-from в rsync.

rsync . -e ssh -qrtl --exclude-from=$SCRIPT_DIR/Exclusions.txt $USER@$DEST_SRV:$DEST_DIR

В результате резервная копия сработала, но не включение. Таким образом, все файлы были зарезервированы даже старше 6 месяцев.

Как я могу это сделать?

заранее спасибо

Хорошо, я решил свою проблему! Строка "найти" останется прежней:

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/includes.txt "%P\n"

И я использую параметр "--files-from" вместо "--exclude-from"

rsync . -e ssh -qrtl --files-from=$SCRIPT_DIR/includes.txt $USER@$DEST_SRV:$DEST_DIR

Согласно страницам руководства,

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE
--include=PATTERN       don't exclude files matching PATTERN
--include-from=FILE     read include patterns from FILE

Исключение составляет шаблон чтения из файлов, а не по самим именам файлов.

Я согласен, что включение / исключение файлов по именам также может быть проблемой, но это не так, как это работает.

Вы можете попробовать что-то вроде этого, чтобы включить файлы новее, чем 1 неделю назад:

--files-from=<(find . -mtime -7 -print0)