Interrompendo rsync con ctrl-c, dovrei usare `--partial` o` --append`?


14

Vorrei interrompere rsync con ctrl-c(diciamo dopo la metà del file è trasferito) e riprendere senza dover inviare nuovamente i dati che sono già stati trasferiti.

Le informazioni di stackexchange / google che ho trovato sembrano contrastanti. Ho trovato alcuni che dicono di usare--partial e altri che dicono di usare --append. Per me sembra che entrambi funzionerebbero.

Se voglio interrompere rsync con ctrl-c, dovrei usare --partialo--append ?

Se entrambi funzionassero, quando è meglio usare l'uno contro l'altro?

Risposte:


8

Per riavviare, --partialè sufficiente. Utilizzare --inplacese non si desidera veramente rsynccreare un file temporaneo che unisce i dati copiati esistenti e quelli nuovi, ad esempio se rsyncsi verificano problemi di autorizzazione durante la creazione di un file temporaneo nella cartella di destinazione.

Utilizzare solo --appendse è possibile garantire che i dati parzialmente copiati siano ancora identici alla fonte. (In genere si tratta di una falsa ottimizzazione.)


1
quindi quando uso le opzioni di cui sopra (attualmente utilizzo --append-confirm) e rsync afferma ancora che sta iniziando dall'inizio, e non vedo alcun cambiamento nella dimensione del file e il tempo rimanente del file è quello che era originariamente quando ho iniziato la copia, rsync sta mentendo o dovrei preoccuparmi?
Michael,

@Michael se hai una fonte e destinazione locale cambiano tutte le regole.
roaima,

Lo stavo facendo attraverso la LAN, ma dopo un po 'più di esperimenti, sembra che il problema sia che dato che in --append-verifyrealtà deve effettivamente leggere le parti del file su entrambi i lati che sono lì, non è più veloce a causa del collo di bottiglia essendo un'unità più vecchia sul lato di lettura e non sulla stessa LAN.
Michael

@Michael, sì, se hai chiesto la verifica dei dati già trasmessi, devi leggere i dati!
roaima,

1
@alper Non ho mai notato questa opzione prima. Sembra che sarebbe meglio usarlo --partial-dir, ma non l'ho ancora provato.
roaima,

3
  • --append presume che il file potrebbe già esistere nella destinazione, fa solo in modo che rsync non controlli il contenuto già lì (ma vedi sotto).
  • --partial dice a rsync di non cancellare i file trasferiti parzialmente.

Avrai anche bisogno --inplacedi --partial(è implicito con --append).

Si scopre --inplaceeffettivamente implica --partial, ecco perché--append è sufficiente (implica --inplaceche implica --partial). Ma da --partialsolo non basta, è necessario --inplace, altrimenti rsync crea file temporanei invece di aggiornare quello finale.


Se volessi interrompere rsync con ctrl-c, userei --append? Perché --partialda solo non riprenderebbe.
Trevor Boyd Smith,

Userei solo --inplace. rsync "riprende sempre" (tenta di trasferire i dati minimi necessari). Quello che --appendfa è dire a rsync di non fare il checksum dei dati già nella destinazione, quindi se il file parziale nella destinazione è stato danneggiato, rimarrà danneggiato --append. --appendpotrebbe essere interessante se, per esempio, il file parziale è molto grande e non puoi aspettare (ed è sicuro o non ti importa se è danneggiato), o qualche altra situazione specifica.
spuk,

1
su Fedora 20 man rsyncl'opzione --appenddice... Implies --inplace
Trevor Boyd Smith,

1
--inplacefunzionerà. --appendfunzionerà perché (come ho affermato nella risposta) implica --inplace, il che implica --partial(che manterrà i file parzialmente trasferiti quando interrotto da Ctrl-c, che era la domanda originale). Quindi --appendsignifica "fai come --inplace, ma non fare il checksum di ciò che è già nella destinazione . È una differenza importante. Se non ti interessa, usa entrambi.
spuk

1
allora qual è il punto di --partial SENZA --inplace
Evan Carroll
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.