Rsync, - удалите не, удаляют файлы на цели

Я выполняю игровой сервер с плагином, который помещает почасовые резервные копии сервера в резервные копии/. После 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? Существует ли обходное решение?

0
задан 9 January 2017 в 06:31

2 ответа

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 для тестирования его сначала.

0
ответ дан 7 November 2019 в 04:33

Попытайтесь использовать - рекурсивный

, Это должно быть похожим на это:

find /path/backups/ -type f -mtime +2 -exec rsync -vPhd -e "ssh -p 512" --ignore-existing --recursive --delete {} me@host:/remote/path/server-backups/ \; 
0
ответ дан 7 November 2019 в 04:33

Другие вопросы по тегам:

Похожие вопросы: