Основным недостатком этой схемы является то, что хост B не может узнать, когда безопасно копировать файлы. Что, если A записывает файл в общий каталог NFS -, а хост B получает доступ к этому файлу до того, как он будет полностью записан? Хост B скопирует частичный файл, и если эта (частичная )копия будет успешной, он удалит весь файл, включая ту часть, которую он не скопировал, потому что хост A не еще не закончил писать.
Тем не менее, это кажется довольно простым применением для rsync
. Прочтите страницу man
, особенно вариант --partial
, возможно, вариант --checksum
и , особенно предостережение в разделе, посвященном параметру --remove-source-files
. Предлагаемый обходной путь использования имен файлов, таких как *.new
, когда хост A записывает файлы для копирования хостом B, а затем переименование файлов .new
в любое предполагаемое имя, может сработать для вас. Переименование в пределах одной файловой системы, как правило, является атомарной операцией, поэтому хосту B просто нужно набраться терпения и игнорировать любые файлы *.new. Как только они будут переименованы, хост B передаст их при следующем запуске задания cron
.