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:
- crea un nuovo file con un nome temporaneo,
- copia il contenuto aggiornato al suo interno,
- scambialo con il file di destinazione e infine
- 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
--partialdovresti causarersynclasciare trasferimenti parziali e riprenderli nei tentativi successivi. -
Usando
--appenddovresti causarersyncsia per lasciare i file parziali che per riprenderli la volta successiva. Dopo il trasferimentorsyncdovrebbe verificare solo il checksum dei dati trasmessi. -
--append-verifyinclude l'intero file nella verifica del checksum, inclusa qualsiasi parte trasferita in un trasferimento precedente. -
Con
--appendo--append-verifyuna 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.