Guarda un filesystem e le modifiche rsync in modo multipiattaforma con dipendenze minime


0

Mi piacerebbe iniziare uno script Ruby o Python di lunga durata e fare in modo che lo script guardi una directory locale per le modifiche ai file e ai nuovi file. Periodicamente, lo script attiverà un rsync a una via verso un percorso di rete remoto.

Questo deve funzionare su entrambi gli ambienti Linux (Ubuntu 13.10+) e Windows (Windows 7+). È importante sottolineare che vorrei ridurre al minimo il numero di dipendenze richieste e mi piacerebbe installare la stessa cosa su ogni sistema semplicemente facendo cadere alcuni file in una directory - nessun programma di installazione.

È possibile ottenere il sistema che sto descrivendo voglio senza un programma di installazione? Se é cosi, come?


solo fyi, rsync ha un'opzione per monitorare le modifiche.
Ricky Beam

@RickyBeam: Devo monitorare le modifiche in modo programmatico che non è adatto per le opzioni della riga di comando di rsync. Ma grazie per l'heads-up!
John Feminella

@RickyBeam lo fa davvero? Come?
laggingreflex

Risposte:


1

In passato, quando stavo facendo questo da una piattaforma Windows a qualsiasi altro sistema che supporta un sshd o sftp, ho usato WinSCP che ha funzioni di sincronizzazione molto ben scritte. WinSCP può anche essere eseguito dalla riga di comando per guardare una directory locale e spingere e / o tirare automaticamente i file su un file system remoto tramite i protocolli SCP o SFTP.

La soluzione WinSCP è molto robusta e altamente configurabile ma è scritta per Windows.

Ho installato WinSCP sulla mia macchina Linux con 32 bit di vino e funziona abbastanza bene, anche se non ho ancora provato a eseguire la funzione di sincronizzazione da CLI su Linux. Sono fiducioso che avrò la CLI a lavorare su Linux poco dopo aver avuto il tempo di concentrarmi su questo.


0

Come possibile soluzione alla prima parte della tua domanda, dovresti dare un'occhiata a inotify-tools , questo contiene lo strumento inotifywait che guarda una directory (o una serie di directory in modo ricorsivo) e genera notifiche di modifiche (queste possono essere limitate a determinati tipi di eventi, ad esempio creazione di file, cancellazione, modifica, ecc.). Maggiori informazioni possono essere trovate sul pagina man .

Non ho familiarità con la programmazione (Python o altro) su macchine Windows, ma c'è stata una porta di inotifywait per Windows sotto forma di inotify-win che, dopo aver prodotto l'eseguibile, si può presumibilmente scappare da uno script tramite sottoprocesso con modifiche minime specifiche della piattaforma dalla versione Linux.

Per la seconda parte della tua domanda, potresti utilizzare SFTP paramiko , tuttavia, sembra che la dipendenza da pycrypto potrebbe rendere questa opzione un po 'impegnativa dal punto di vista di Windows.

Mi rendo conto che questa non è una risposta completa a tutte le parti della tua domanda, ma spero che ci sia qualcosa che trovi utile.


0

Ho sentito cose positive https://pypi.python.org/pypi/watchdog - una libreria Python per il monitoraggio degli eventi del filesystem che funziona su Linux, OSX, FreeBSD e Windows.

Vorrei usare qualcosa come bbfreeze o pyinstaller per impacchettare l'intero strumento in binari per le varie piattaforme. rsync ha già programmi di installazione per la maggior parte dei sistemi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.