Загрузите файл с сервера Linux после его создания

Я недавно начал работать с сервером Linux, я очень новый. Моя программа CUDA/C++ решает двухмерное дифференциальное уравнение и записывает выходные данные, скажем, каждые 1000 временных шагов. Это происходит примерно каждую минуту.

Можно ли автоматически загружать файлы на мой компьютер после их создания на сервере Linux или сохранять их непосредственно на моем компьютере?

Это значительно ускорило бы мою работу, поскольку теперь мне нужно ждать, пока моя программа завершит все вычисления, а затем загрузить ее вручную. Я также обычно использую 6 GPUS одновременно, они выводят данные в разные указанные папки на сервере LINUX (скажем, папки 0, 1,2,3,4,5).

2 ответа

Решение

Да, вы можете использовать команду inotify-wait, которая является частью пакета inotify-tools. Создайте файл, называемый, например, my_monitor, с содержимым

#!/bin/bash
while true # will loop forever!
do 
   inotify-wait -r -e modify,attrib,close_write,move,create,delete /path/to/dir/or/file/to/monitor && /path/to/script
done

inotify-wait контролирует каталог или файл (и, если вы добавите флаг -r, он будет рекурсивно отслеживать все дерево каталогов) на предмет изменений. Я выбрал некоторые типичные изменения, за которыми вы можете наблюдать, и вы можете найти исчерпывающий список здесь; inotify-wait завершается, как только происходит одно событие из приведенного выше списка, и команда выше выполняет некоторый сценарий bash (который вы должны написать), который скопирует нужные вам файлы на другой компьютер. Как только передача файла завершится, цикл начнется снова.

Вы можете запустить скрипт выше

nohup /path/to/my_monitor

Это означает, что, даже если вы выйдете с этого компьютера, скрипт не перестанет работать: в основном он будет работать вечно (т.е. до перезагрузки).

Это все.

На компьютере с Linux вы можете запустить простой сервер, который обслуживает сгенерированные файлы, например cd в нужный каталог и запустите:

python -m SimpleHTTPServer

Тогда на домашнем ПК вы можете использовать wget периодически загружать новые материалы (как достигается с -N):

while true; do
    wget -rN http://server/
    sleep 60
done

Если вы используете Windows дома, вы можете получить Wget для Windows и написать выше, как BAT сценарий, или используйте другой загрузчик, который делает такое зеркалирование изначально.

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