pmate ha scritto:Non solo nel caso di ftp ma anche di ssh (per dirne una).
curlftpfs e/o sshfs (+ fuse) fanno egregiamente il proprio lavoro.
Ma tu che dici, è il caso di montare anche quando non strettamente necessario, come ad esempio per ssh? Credo sia soprattutto una questione di performance e credo che il mount debba essere l'ultima spiaggia.
pmate ha scritto:I controlli sull'esistenza del file di configurazione e della connessione potrebbe farli lo script di sincronizzazione stesso.
Inotify resta attivo fin tanto che il programma non lo si ferma (while serve proprio a quello). Quando rileva una modifica tenta il sync. Se fallisce riprova il mount della directory remota. Se ha successo, esegue il sync altrimenti avvisa l'utente di controllare la connessione ed esce interrompendo il while.
Una volta sistemata la connessione, al successivo riavvio del programma avviene il sync.
Secondo me è preferibile demandare queste azioni allo script di sincronizzazione piuttosto che prevedere una pausa tra un ciclo e l'altro.
Quindi, se ho capito bene, la tua proposta è di verificare l'esito di unison (che comunque ha un tot di tentativi utili da eseguire) all'interno del while e regolarsi di conseguenza.
Ma se poi la connessione torna attiva? :-D
pmate ha scritto:p.s. il file source-files.list lo chiamerei server.conf oppure remote.conf o qualcosa del genere; così com'è mi ricorda troppo il file relativo ai repository... ah, l'arteriosclerosi...

Provvedo.
pmate ha scritto:a mio parere si potrebbe evitare la scelta di una directory arbitraria da parte del client, un pò come in dropbox.
Se il software lo si chiama (ad esempio)
fud (acronimo, la
d finale sta per dropbox... cosa significheranno mai
f e
u?

), quell'istruzione potrebbe diventare...
Fuck you Dropbox? :-D
Sì, volendo è possibile. Ma credo sia una questione di comodità personale: io ad esempio non lo sopporto, tant'è che sono costretto ad andare di link simbolico in link simbolico e di tenerli regolarmente sott'occhio. Ovviamente se devo aggiungere un nuovo client sai che succede? È un casino:
- faccio sincronizzare, ovvero faccio scaricare tutto. Dropbox ovviamente scarica tutto nella sua cartella, perché sugli altri client vede così (anche se non è);
- devo fermare Dropbox, altrimenti mentre faccio le successive modifiche va in confusione (giustamente...);
- devo riordinare i file che mi ha scaricato nella sua cartella;
- devo ricreare i link simbolici come sugli altri client, altrimenti al riavvio di Dropbox andrà anche in questo caso in confusione (giustamente...);
- faccio ripartire Dropbox.
Potremmo invece procedere come segue: prevedere una directory arbitraria come default. Ovvero un eventuale script d'installazione (che ho già messo in conto), crea la cartellina Fud e crea il file sorgenti inserendoci solo quella.
Poi chi come me vuole agire diversamente, modifica.
pmate ha scritto:Altra cosa, il check della raggiungibilità del server viene fatto tramite ping.
Io lo eviterei visto che (ad esempio) diversi server droppano/rifiutano il ping. Magari il check può essere effettuato direttamente cercando di montare la risorsa remota. Se il mount fallisse il messaggio d'errore sarebbe genericamente riferito a problemi di connessione.
Giustamente. D'altronde già adesso con ssh verifica la connessione e verifica la disponibilità di unison sul server.
Ho una domanda. Perché non funziona nessuno dei tre?
- Codice: Seleziona tutto
unison $HOME ssh://$USER@$SERVER:$PORT/$RPATH $LPATHOPTION -logfile $LOGFILE $boptions -batch -auto -terse | grep "Synchronization complete at"
- Codice: Seleziona tutto
unison $HOME ssh://$USER@$SERVER:$PORT/$RPATH $LPATHOPTION -logfile $LOGFILE $boptions -batch -auto -terse | notify-send
- Codice: Seleziona tutto
unison $HOME ssh://$USER@$SERVER:$PORT/$RPATH $LPATHOPTION -logfile $LOGFILE $boptions -batch -auto -terse | grep "Synchronization complete at" | notify-send
Il terzo è ovviamente il risultato che voglio raggiungere, ma in tutti e tre i casi tutto ciò che viene dopo la prima pipeline viene completamente ignorato. Unison stampa sempre il suo output e lo stampa completamente.
p.s. il grep è solo un primo passaggio, poi con una regex devo togliere un po' di altra roba. Ma penso che per la notifica sia sufficiente un "sincronizzati 4 file", dato che si trova appunta nella riga che comincia per "Synchronization complete at"