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
--partial
dovresti causarersync
lasciare trasferimenti parziali e riprenderli nei tentativi successivi. -
Usando
--append
dovresti causarersync
sia per lasciare i file parziali che per riprenderli la volta successiva. Dopo il trasferimentorsync
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.