Faça o download do arquivo do servidor linux assim que ele for criado

0

Comecei recentemente a trabalhar com o servidor Linux, sou muito novo. Meu programa CUDA / C ++ resolve a equação diferencial 2D e grava a saída a cada 1000 passos de tempo. Acontece a cada minuto.

É possível baixar arquivos automaticamente para o meu PC depois que eles são gerados no servidor Linux ou salvá-los diretamente no meu PC?

Isso aceleraria significativamente meu trabalho, já que agora preciso esperar que meu programa conclua todos os cálculos e faça o download manualmente. Eu também normalmente uso 6 GPUS ao mesmo tempo, eles produzem saída em diferentes pastas especificadas no servidor LINUX (digamos, pastas 0 , 1 , 2 , 3 , 4 , 5 ) .

    
por Mikhail Genkin 02.12.2016 / 19:14

2 respostas

1

Sim, você pode usar inotify-wait um comando que faz parte do pacote inotify-tools . Crie um arquivo chamado por exemplo my_monitor , com conteúdo

#!/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 monitora um diretório ou um arquivo (e, se você adicionar o sinalizador -r , ele monitorará toda a árvore de diretórios recursivamente) quanto a mudanças. Eu selecionei algumas mudanças típicas a serem observadas, e você pode encontrar uma lista exaustiva aqui ; inotify-wait termina assim que um evento na lista acima ocorre, e o comando acima então executa algum script bash (que você precisa escreva) que copia os arquivos que você precisa para sua outra máquina. Assim que a transferência de arquivos for concluída, o ciclo será iniciado novamente.

Você pode iniciar o script acima com

nohup /path/to/my_monitor

o que significa que, mesmo se você sair deste pc, o script não parará de funcionar: basicamente, ele será executado para sempre ( i.e. , até a reinicialização).

Isso é tudo.

    
por 03.12.2016 / 10:42
1

Você pode executar um servidor simples na máquina Linux que serve os arquivos gerados, por exemplo, cd para o diretório desejado e execute:

python -m SimpleHTTPServer

Em seguida, no computador de casa, você pode usar wget para fazer o download periódico do material novo (conforme obtido com -N ):

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

Se você estiver executando o Windows em casa, poderá obter o Wget para Windows e escrever o acima como um script BAT ou usar um downloader diferente que faça esse tipo de espelhamento nativamente.

    
por 03.12.2016 / 10:37