rsync копирование файлов за последние несколько дней

Понадобилось иметь копию бэкапов на удаленной площадке, но не всех, а только последних 14 штук.

Решил проблему однострочником.

В начале на удаленной площадке удаляем все бэкапы старше 14 дней, затем копируем на удаленную площадку бэкапы которые НЕ СТАРЕЕ 14 дней с локального сервера.

/mnt/nfs/888 — папка с бэкапами на локальном сервере
/mnt/emc/888 — папка с бэкапами на удаленной площадке

find /mnt/emc/888 -type f -mtime +14 -exec rm {} \; && find /mnt/nfs/888 -type f -mtime -14 -exec rsync -r -u -t --progress {} /mnt/emc/888 \;

Смотрите так же:

rsync копирование файлов за последние несколько дней: 5 комментариев

  1. должно, но я проверял :-), например find находит файл /mnt/nfs/888/a/123432432/123.jpg и запускает синк
    rsync -r -u -t —progress /mnt/nfs/888/a/123432432/123.jpg /mnt/emc/888
    и получается оно синкает только файл в /mnt/emc/888 а не всю структуру. Ключ -r не помогает, он отвечает за рекурсию, но команда find выбирает список файлов и синкается каждый файл без рекурсии а не папка /mnt/nfs/888 рекурсивно …

    а решение кроется в ключе
    -R, —relative use relative path names

    и чтобы копировалась вся струкрута папок, команда будет вот:
    find /mnt/nfs/888/./ -type f -mtime -14 -exec rsync -rutR —progress {} /mnt/emc/888 \;

    почему надо указывать для find путь поиска с точкой /mnt/nfs/888/./ , потому что тогда генерится путь к файлу через точку /mnt/nfs/888/./a/123432432/123.jpg
    А ключ rsync -R он копирует структуру папок именно от точки, то есть будет синкать a/123432432/123.jpg полностью со всей структурой.

    Просто вот теперь интересно вы просто пишете статью или все-таки проверяете команды ;-)

    1. Я решал определенную задачу — вынос на удаленную площадку бэкапов виртуалок, на случай апокалипсиса. Там не было вложенности, потому я момент про иерархию папок не проверял и даже о нем не думал.

      Я вот сейчас смотрел на код, и думал, зачем так сложно, и только минут через 10 я вспомнил, почему именно так…

      Ну а строчку в статье заменю на вашу, проверять не буду, не на чем ))) надеюсь что она работает.

      1. я вот попробовал нагуглить решение и так и не нашел быстро и легко :-), но это стимулировало читнуть man и разобраться все-таки поискать ключи :-)

        можете вот добавить как дополнительное решение синкать со структурой папок. Вот решил и пообщаться заодно и проверить на сколько живой блог. Также по своему блогу знаю живые коменты хорошо влияют на выдачу страницы, так что спасибо вообще за статью и операвность и удачи :-)

  2. а если есть вложенные подпапки , тогда команда не канает так как структуру подпапок rsync не синкает при таком варианте. Есть вариант как засинкать файлі за последнюю неделю, если есть структура типа /mnt/emc/888/a/123432432/123.jpg ? Засинкать надо папку /mnt/emc/888/ но только файлы за последнюю неделю со структурой подпапок.

    Спасибо за ответ

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.