Копирование / Резервное копирование всех файлов, кроме самого последнего с помощью scp

У меня есть программа, которая работает на нескольких машинах и которая записывает результаты в ~/data/machine_name/ , каждый раз, когда файл результатов превышает 1 ~/data/machine_name/ , программа переходит и записывается в новый файл. (Все машины имеют одну и ту же структуру каталогов).

Я хочу сделать автоматическое резервное копирование этих файлов в случае сбоя одного из компьютеров. Зная, что самый последний доступный файл – тот, который написан программой, и, следовательно, я бы скопировал все старые файлы, кроме этого. При следующем запуске задания резервного копирования будет включен последний файл, отсутствующий в предыдущей резервной копии, и так далее.

Сейчас я использую только простую команду scp , которая копирует даже файл, открытый удаленной машиной.

В любом случае, для этого? утилиту командной строки или скрипт для такой работы?

  • Как я могу отправить один файл на несколько удаленных сайтов одновременно?
  • Однострочный трафик SCP для загрузки файла в конце строки
  • Как scp через промежуточную машину?
  • Невозможно scp в Дженкинсе
  • scp не может загружать / скачивать файлы, даже если ssh работает
  • Как загрузить файл из Windows в Linux?
  • Какой скрипт perl будет использовать scp-каталог с пробелами?
  • Передача файлов Сообщение SSH SCP об ошибке: «Stdin: не является tty»
  • One Solution collect form web for “Копирование / Резервное копирование всех файлов, кроме самого последнего с помощью scp”

    Вы можете использовать утилиту резервного копирования rsync с параметром --exclude :

     /usr/bin/rsync -avz --exclude='$EXCLUDED_DIR_OR_FILE' -e ssh /your/base/folder \ user@host_or_ip:/target/machine/path >> /optional/log/file.log 

    Вы можете определить переменную $EXCLUDED_DIR_OR_FILE , найдя последний обновленный файл. Существует несколько способов найти последний обновленный файл в данном каталоге, один из которых использует утилиты ls и awk :

     ls -lrt | awk '{ f=$NF }; END{ print f }' 

    Обратите внимание, что эта команда печатает последнее измененное file name а не полный путь к файлу.

    Linux и Unix - лучшая ОС в мире.