Я выполняю игровой сервер с плагином, который помещает почасовые резервные копии сервера в резервные копии/. После 1 дня плагин сохраняет 2 резервных/день. Я хочу синхронизировать этот резервный каталог к удаленному серверу с файлами, более старыми, чем 2 дня так, чтобы он не синхронизировал файлы, которые в конечном счете будут удалены к концу дня. Чтобы сделать это, я запускаю этот скрипт:
find /path/backups/ -type f -mtime +2 -exec rsync -vPhd -e "ssh -p 512" --ignore-existing --delete {} me@host:/remote/path/server-backups/ \;
Однако - удаляют, на самом деле не удаляет старые файлы на целевом узле. Это из-за mtime? Существует ли обходное решение?
exec
в Вашей находке будет rsync каждый файл отдельно, потому что find
возвратит 1 файл за один раз. Так Ваш --delete
не будет работать, потому что Ваша строка является basicly scp
, Что Вы могли сделать,
find /path/backups/ -type f -mtime -2 -printf '%P\n' | rsync -avz --progress --delete --exclude-from=- -e "ssh -p 512" /path/backups/ me@host:/remote/path/server-backups/
Этот, будет rsync папка backups
к server-backups
, но исключает файлы, моложе, чем 2 дня. Можно поместить --dry-run
в rsync для тестирования его сначала.
Попытайтесь использовать - рекурсивный
, Это должно быть похожим на это:
find /path/backups/ -type f -mtime +2 -exec rsync -vPhd -e "ssh -p 512" --ignore-existing --recursive --delete {} me@host:/remote/path/server-backups/ \;