GNU/Linux >> Linux Esercitazione >  >> Linux

Trasferimenti di file più intelligenti rispetto a Rsync??

Chiuso . Questa domanda ha bisogno di dettagli o chiarezza. Attualmente non accetta risposte.

Vuoi migliorare questa domanda? Aggiungi dettagli e chiarisci il problema modificando questo post.

Chiuso 6 anni fa.


Migliora questa domanda

Ho un file di grandi dimensioni (2-3 GB, binario, formato non documentato) che utilizzo su due computer diversi (normalmente lo uso su un sistema desktop ma quando viaggio lo metto sul mio laptop). Uso rsync per trasferire questo file avanti e indietro.

Di tanto in tanto effettuo piccoli aggiornamenti a questo file, modificando meno di 100 kB. Questo accade su entrambi i sistemi.

Il problema con rsync da quanto ho capito è che se pensa che un file sia cambiato tra origine e destinazione, trasferisce il file completo. Nella mia situazione sembra una grande perdita di tempo quando solo una piccola parte di un file ha delle modifiche. Prevedo un protocollo in cui gli agenti di trasferimento su origine e destinazione prima effettuano il checksum dell'intero file e quindi confrontano il risultato. Quando si rendono conto che il checksum per l'intero file è diverso, dividono il file in due parti, A e B e le sommano separatamente.

Ah, B è identico su entrambe le macchine, ignoriamo quella metà. Ora divide A in A1 e A2. Ok, solo A2 è cambiato. Dividi A2 in A2I e A2II e confronta ecc. Fallo in modo ricorsivo finché non ha trovato, ad esempio, tre parti di 1 MB ciascuna che differiscono tra origine e destinazione, quindi trasferisci solo queste parti e inseriscile nella giusta posizione nel file di destinazione. Oggi con SSD veloci e CPU multicore tale parallelizzazione dovrebbe essere molto efficiente.

Quindi la mia domanda è:ci sono strumenti che funzionano in questo modo (o in un altro modo che non potrei immaginare ma con risultati simili) disponibili oggi?

Pubblicata una richiesta di chiarimento. Uso principalmente Mac, quindi il filesystem è HFS+. In genere inizio la rsync in questo modo

rsync -av --delete --progress --stats – in questi casi a volte uso SSH ea volte rsyncd. Quando uso rsyncd lo avvio in questo modo rsync --daemon --verbose --no-detach .

Secondo chiarimento:chiedo uno strumento che trasferisca semplicemente il delta per un file che esiste in due posizioni con piccole modifiche e/o se rsync lo offre davvero. La mia esperienza con rsync è che trasferisce i file per intero (ma ora c'è una risposta che spiega questo:rsync ha bisogno di un server rsync per poter trasferire solo i delta, altrimenti (ad esempio, usando ssh-shell) trasferisce l'intero file comunque molto è cambiato).

Correlati:quando useresti un descrittore di file aggiuntivo?

Risposta accettata:

Rsync non utilizzerà i delta ma trasmetterà l'intero file nella sua interezza se, come processo singolo, è responsabile dei file di origine e di destinazione. Può trasmettere delta quando è presente un processo client e server separato in esecuzione sulle macchine di origine e di destinazione.

Il motivo per cui rsync non invierà delta quando è l'unico processo è che per determinare se è necessario inviare un delta, è necessario leggere i file di origine e di destinazione. Al termine, potrebbe anche aver appena copiato il file direttamente.

Se stai usando un comando di questo modulo hai solo un processo di rsync:

rsync /path/to/local/file /network/path/to/remote/file

Se stai usando un comando di questo modulo hai due processi di rsync (uno sull'host locale e uno su quello remoto) e puoi usare i delta:

rsync /path/to/local/file remote_host:/path/to/remote/file

Linux
  1. L'uso di Rsync durante l'aggiornamento della sorgente è sicuro?

  2. Confronta le directory ma non il contenuto dei file?

  3. Perché usare Install invece di Cp e Mkdir?

  4. RSync:come posso sincronizzare in entrambe le direzioni?

  5. Come possiamo memorizzare password diverse dal testo normale?

Come RSYNC un singolo file?

L'algoritmo di copia dei file Linux (Ubuntu) è migliore di Windows 7?

Preservare i permessi di file e cartelle con rsync

Riprendi il trasferimento di un singolo file tramite rsync

cp -L contro cp -H

Montaggio di un file system su Internet