Come posso sincronizzare la mia cartella principale su rete e Internet?


8

Uso il mio laptop con Ubuntu-desktop per fare tutto il mio lavoro, ma ho anche un desktop di fascia bassa nel mio ufficio seduto lì. Ho deciso di installare Ubuntu-server su di esso e utilizzarlo per eseguire il mirroring dell'intera cartella home del mio laptop, per semplificare le cose quando decido di formattare il disco rigido del mio laptop.

Ogni volta che sono al lavoro, entrambe le macchine sono connesse a una rete e comunicano facilmente (e ad alta velocità) tramite ssh. Quando non sono al lavoro, il desktop è ancora accessibile tramite ssh. Idealmente, la sincronizzazione avverrebbe automaticamente in background, ogni volta che cambio qualcosa. Deve solo essere un modo: le modifiche apportate sul laptop devono essere sincronizzate sul server, ma non è necessario il contrario.

So che esiste un software per questo là fuori, la mia domanda è: quale software posso usare per raggiungere gli obiettivi di cui sopra e sfruttare al massimo le velocità della rete locale quando sono al lavoro? Dato che a volte mi occuperò di file di grandi dimensioni, il processo di sincronizzazione deve rendersi conto che i due computer condividono una rete locale e quindi trarne vantaggio (invece di sincronizzarsi sempre tramite Internet).

Per essere chiari, la sincronizzazione tramite rete è in realtà per me più importante della sincronizzazione via Internet. Idealmente, il software dovrebbe verificare se il primo è disponibile e, in caso contrario, provare il secondo; ma se ciò non fosse possibile, il primo caso è la mia priorità.

Spero che questo non sia troppo lungo. Grazie in anticipo.

Risposte:


11

Se riesci a connetterti al server dell'ufficio solo tramite SSH, la scelta migliore è utilizzare rsync : può utilizzare SSH come protocollo di trasporto e utilizza un algoritmo intelligente per velocizzare il trasferimento di file di grandi dimensioni, inviando solo i blocchi modificati.

Poiché hai solo bisogno della sincronizzazione unidirezionale, imposta l'autenticazione SSH senza password dal tuo laptop al server dell'ufficio, quindi puoi iniziare con un comando semplice come:

rsync -e ssh -a $HOME/ myuser@officeserv:

aggiunta --includee --excludeopzioni per perfezionare l'elenco di file / directory che si desidera sincronizzare. Ad esempio, il trasferimento delle impostazioni del programma ("file di punti") può essere rischioso se i due computer non eseguono lo stesso sistema operativo (stessa versione). Il mio suggerimento è di iniziare escludendo tutti i "file punto" (quindi, utilizzare --exclude="$HOME/.[a-z]*") e quindi aggiungere selettivamente le directory di configurazione dei programmi che possono essere condivise in modo sicuro (questo deve essere visto su un programma in base al programma). Inoltre, la cache del browser Web e $HOME/.cachepuò sempre essere esclusa. Vedi la sezione "REGOLE DEL FILTRO" nella rsyncpagina man per una discussione dettagliata della sintassi delle regole include / exclude.

Tuttavia, rsyncnon ha una modalità "operazioni continue", quindi dovrai eseguirla periodicamente dal tuo crontab .


Questo suona bene. Lo testerò non appena avrò installato il server. Una domanda: il protocollo SSH utilizza automaticamente la connessione più breve al server? Voglio dire: si connetterà attraverso la rete locale se sia il client che il server si trovano nella rete dell'ufficio o tenterà sempre le connessioni Internet?
Malabarba,

A proposito, hai ragione sulla cache del browser. Qualche altro suggerimento di cartelle che dovrei escludere? Il mio obiettivo è sincronizzare tutti i file personali, i profili, le impostazioni e i file di configurazione.
Malabarba,

1
@Bruce Connor: SSH si connetterà a un host remoto usando il solito algoritmo di routing IP. Testo di risposta aggiornato con suggerimento per un elenco di esclusione iniziale.
Riccardo Murri,

Grazie. Per evitare conflitti, potrei sincronizzare la cartella principale del mio laptop con una sottocartella nel server (e non la cartella principale effettiva del server).
Malabarba,

@riccardomurri per "autenticazione SSH senza password" intendi basato su file di chiavi? o qualcos'altro?
david.libremone,

3

Suggerirei di utilizzare rdiff-backup su rsync. È praticamente solo rsync ++.

a differenza di rsync che solo un mirror 1-1 che trasferisce diffs, rsync ha un meccanismo cronologico. Quindi, se hai rovinato e cancellato qualcosa di importante, puoi tornare a una settimana fa e riaverlo.

Sul "server" di Ubuntu devi solo avere ssh in esecuzione per apt-get install rdiff-backup.

sul client. Vorrei eseguire questo manualmente .. o tramite un crontab.

#!/bin/bash

  #backup.sh

  rdiff-backup -v5 --exclude path-to-annoyingfile  /home/user/ hostname::/media/data/snapshots/laptop 
  ## this will cleanup any backups older then 2weeks.  Adjust this as needed.
  rdiff-backup --remove-older-than  2W --force  hostname::/media/data/snapshots/laptop


  #!/bin/bash
  ##Restore.
  rdiff-backup -v5 --restore-as-of now --force user@hostname::/media/data/snapshots/laptop  /home/user

Se apri la tua porta 22 su Internet .. dovresti essere in grado di eseguire lo stesso script in entrambi i modi .. basta che il tuo nome host si risolva localmente sul tuo IP locale.

vale a dire. backupSrv.penguins.org si risolverebbe nell'IP esterno di. 2.3.4.5 ma all'interno della tua lan: al 192.168.1.253


Penso che alla tua sceneggiatura manchino alcune interruzioni di riga.
Malabarba,

2

Non esiste una soluzione completa e preconfezionata al tuo problema di cui sia a conoscenza. Probabilmente devi scrivere tu stesso un piccolo copione per quello.

La sincronizzazione stessa potrebbe essere fatta da rsync, come già spiegato da Riccardo Murri. Rsync trasferisce solo le parti modificate dei file, quindi è perfetto per questa attività.

È possibile utilizzare NetworkManagerDispatcher per eseguire script sulla connessione / disconnessione di un'interfaccia di rete. Quindi potresti scrivere uno script che controlla se sei sulla rete corretta e quindi chiama rsync. In questo modo i tuoi dati verrebbero automaticamente sincronizzati quando ti connetti alla tua rete aziendale.

Per sincronizzare periodicamente i tuoi dati puoi usare cron, come già accennato.

Dovresti anche considerare la sicurezza quando usi rsync tramite ssh. Per sincronizzare senza l'intervento dell'utente è necessario un file di chiavi senza password. Chiunque abbia questo file di chiavi può accedere al server a cui appartiene. Consiglio vivamente di crittografare la cartella principale per proteggere i dati sul notebook e sul server.


1

DropBox | DropBox @ SuperUser http://www.dropbox.com/help/137

DropBox dovrebbe essere buono nel tuo caso, funziona su Linux, mac, windows, facile installazione e gestione.

Scarica DropBox

/superuser/147315/dropbox-to-sync-nix-home-folders

http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

Leggi: supporta la sincronizzazione tramite link simbolici e se ci sono determinati documenti, grafici, fogli di calcolo che devi sincronizzare, puoi comunque conservarne una copia in dropbox o salvarli permanentemente nella posizione di dropbox per salvare la seccatura.


Non credo che tu possa impostare Dropbox come cartella Home (almeno non ancora).
Matteo,

superuser.com/questions/147315/dropbox-to-sync-nix-home-folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders Hai una lettura: supporta la sincronizzazione tramite link simbolici e se ci sono determinati documenti, grafici, fogli di calcolo che sincronizzare - è ancora possibile mantenerne una copia nel dropbox o salvarli permanentemente nella posizione del dropbox per salvare la seccatura.
Rihatum,

1
Grazie, ma sto già utilizzando le piattaforme dropbox. Quello che sto cercando qui è qualcosa che mi consente di sincronizzare molti GB di file senza spese e di sfruttare le reti locali.
Malabarba,

1

Prova Sparkleshare: http://sparkleshare.org/

C'è un client nel repository di Ubuntu e contiene istruzioni su come configurare un server sul loro sito Web.


sembra un ottimo programma - la soluzione meno caotica; la versione 1.0 è stata rilasciata il mese scorso.
Abe

0

La migliore soluzione per il 2015 dovrebbe essere Seafile: https://www.seafile.com/en/download/

Gli sviluppatori di Sparkleshare si dicono che il loro strumento è buono per molti file di testo piccoli e in particolare, ma non così buono per file più grandi e binari ..

E in termini di prestazioni, supera sia Sparkleshare che Owncloud.

Inoltre è molto meno affamato di OwnCloud - quindi un'istanza può essere eseguita su una Banana o Raspberry senza problemi come un computer in esecuzione 24/7. (Consiglierei un Banana Pi però, a causa della rete Gigabit e dell'interfaccia SATA, è stata una buona scelta per un file server almeno per me.)

Sincronizzo le mie cartelle home con tre computer. Escludo dotfile, sono gestiti su un repository git e un po 'di logica perché - come ha detto Ricardo - ci sono alcuni problemi nella condivisione di dotfile e altre configurazioni su computer diversi, anche quando si tratta dello stesso sistema operativo e della stessa versione. Pensa al monitor.xml, ad esempio, o ad un layout diverso per un IDE sul tuo laptop e sul tuo desktop multiscreen - o su un programma aperto su entrambi i computer.

In aggiunta alla sincronizzazione, eseguo il backup di questi dati - tramite borgbackup. È un nuovo programma di backup molto bello, che esegue la deduplicazione, è molto veloce dopo il backup iniziale e ha molte funzionalità che mancano a molti strumenti.

È la configurazione perfetta per me.

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.