Sincronizzazione programmatica con server remoti

4

La mia applicazione genera file di testo che devono essere sincronizzati con server remoti, che possono essere Windows o Linux. La sincronizzazione deve avvenire senza l'intervento dell'utente.

Ho provato con rsync ma Windows non viene fornito con rsync per impostazione predefinita. Inoltre, non è possibile fornire la password nella riga di comando per rsync.

Attualmente sto andando con ftp. Ma sembra un modo inefficiente.

C'è un modo per rsync senza l'intervento dell'utente? Quali sono i modi per sincronizzare con un server remoto a livello di programmazione? L'app è su nodejs.

    
posta jjude 08.05.2014 - 07:28
fonte

3 risposte

1

Piuttosto che usare FTP che è insicuro (rispetto a SFTP) e richiede molto tempo e impegno (relativamente) suggerisco di usare SSH per caricare i file sul server remoto tramite SCP con i lavori Cron (se questa è una routine operazione) o aggiungendo un alias nella tua ~/.bash_profile per qualcosa come push text-files .

Poiché hai detto che questa app viene eseguita con il nodo, puoi utilizzare qualcosa chiamato exec per eseguire comandi dallo script. Ad esempio potresti dire qualcosa del tipo:

exec = require('child_process').exec;

exec('scp -r /path/to/the/files server:/path/they/should/upload/to');

Ecco un ottimo articolo su come configurare SSH con un server basato su Unix se non sei familiare: link

Potresti anche scrivere lavori nella tua app con qualcosa come node-schedule o un altro pacchetto di lavoro. Questo approccio significa che è possibile saltare la scrittura di lavori Cron sul server. I documenti Rails sono completamente estranei a Node, ma l'introduzione ti darà un'idea di cosa sono i lavori e cosa fanno: link

    
risposta data 28.02.2016 - 15:05
fonte
0

Penso che dovresti svolgere due compiti:

  1. guarda il filesystem di origine per il cambiamento. Questo può essere fatto da cron job (task scheduler per windows) per verificare le modifiche, osservatore FTP che controlla le modifiche nel server FTP. Sono sicuro che ci sono anche altre opzioni.
  2. Devi copiare i file sorgente nei server di destinazione. Questo è possibile ottenere in vari modi tramite ftp o ssh o persino caricare file tramite http.

La tua migliore configurazione dipende da ciò che è già installato lì sui server o da quello che è più facile da configurare. Inoltre, devi eseguire la sincronizzazione se i file hanno modifiche nei server remoti.

    
risposta data 08.05.2014 - 09:59
fonte
0

La sincronizzazione di interi file ha la tendenza a creare più traffico di quello che vuoi. Potrebbe essere un'opzione migliore per farlo a un livello più complesso, usando il tuo servizio RPC.

Ad esempio, potresti dare un'occhiata a Apache Thrift . In pratica ti permette di creare un servizio remoto per fare qualsiasi cosa desideri. Funziona cross-language, cross-platform out of the box, progettato per essere efficiente e basato su un IDL molto semplice.

Anche se la creazione del tuo servizio può comportare un certo lavoro, non sei più obbligato a trasferire interi file (ma puoi farlo anche tu), sarai anche in grado di estendere il servizio in futuro facilmente.

Se vuoi ancora scambiare interi file, valuta la possibilità di comprimerli in anticipo e di utilizzare servizi come Dropbox o simili. A seconda del "livello di divulgazione" dei tuoi dati, puoi anche crittografarli durante il trasferimento.

    
risposta data 07.06.2014 - 11:26
fonte

Leggi altre domande sui tag