GNU/Linux >> Linux Esercitazione >  >> Linux

Riprendi il trasferimento di un singolo file tramite rsync

Per riprendere una copia interrotta, dovresti usare rsync --append . Dalla spiegazione della pagina man di --append :

Ciò fa sì che rsync aggiorni un file aggiungendo i dati alla fine del file, il chepresuppone che i dati già esistenti sul lato ricevente siano identici all'inizio del file sul lato mittente. [...] Implica --inplace , [...]

Opzione --inplace rende rsync (sovra)scrivi direttamente il contenuto del file di destinazione; senza --inplace , rsync sarebbe:

  1. crea un nuovo file con un nome temporaneo,
  2. copia il contenuto aggiornato al suo interno,
  3. scambialo con il file di destinazione e infine
  4. cancella la vecchia copia del file di destinazione.

La normale modalità di funzionamento previene principalmente i conflitti con le applicazioni che potrebbero avere il file di destinazione aperto e alcuni altri incidenti che sono debitamente elencati nel rsync manpage.

Si noti che, se un'operazione di copia/aggiornamento fallisce nei passaggi 1.-3. sopra,rsync eliminerà il file di destinazione temporaneo; il --partial l'opzione disabilita questo comportamento e rsync lascerà i file temporanei parzialmente trasferiti sul filesystem di destinazione. Pertanto, riprendere un'operazione di copia di un singolo file non guadagnerà molto a meno che tu non chiami il primo rsync con --partial o--partial-dir (stesso effetto di --partial , inoltre istruisce rsync per creare tutti i file temporanei in una directory specifica).


Tieni presente che --append implica --inplace , che a sua volta implica --partial .

  • Usando solo --partial dovresti causare rsync lasciare trasferimenti parziali e riprenderli nei tentativi successivi.

  • Usando --append dovresti causare rsync sia per lasciare i file parziali che per riprenderli la volta successiva. Dopo il trasferimento rsync dovrebbe verificare solo il checksum dei dati trasmessi.

  • --append-verify include l'intero file nella verifica del checksum, inclusa qualsiasi parte trasferita in un trasferimento precedente.

  • Con --append o --append-verify una verifica del checksum fallita dovrebbe causare la ritrasmissione completa del file (utilizzando --inplace )

Dovresti essere in grado di riprendere un mv o cp operazione con rsync ma potresti voler usare il --append-verify opzione per la tranquillità.

Nota che usando --append causa rsync da copiare solo quei file che hanno la dimensione sul destinatario inferiore alla dimensione sul mittente (indipendentemente dai timestamp) o sono assenti sul destinatario. Dalla documentazione su questa opzione:

Se un file deve essere trasferito e le sue dimensioni sul destinatario sono uguali o superiori a quelle sul mittente, il file viene ignorato.

Maggiori informazioni nella pagina man


David Schwartz ha ragione, --partial (o meglio, -P ) fa quello che vuoi. L'ho verificato su un file 37G in cui è stato bloccato ~ 8g, su una rete. rsync ha scansionato rapidamente le prime parti del parziale (mostrando l'avanzamento grazie a -P ), quindi ha ripreso il trasferimento fino alla fine del file parziale.


Linux
  1. Protocolli di trasferimento file:FTP vs SFTP

  2. Trasferimenti di file più intelligenti rispetto a Rsync??

  3. Concatenare file specifici in un unico file?

  4. Che cos'è il protocollo FTP (File Transfer Protocol)

  5. Come utilizzare Netcat per trasferire file su Linux

Come trasferire file con Rsync su SSH

Esempi di Rsync per trasferire file in Linux

Sincronizzare due tipi di file in un comando?

Trasferisci file usando WinSCP

C'è un modo per riprendere uno scp interrotto di un file?

Montaggio di un file system su Internet