Ошибка bash-скрипта rsync --include-from

Ошибка bash-скрипта rsync --include-from

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

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 месяцев.

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

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

решение1

Согласно man-страницам,

--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

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

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

Чтобы включить файлы, созданные более недели назад, можно попробовать сделать следующее:

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

решение2

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

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

Связанный контент