rsync --remove-source-files cancella i file sorgente uno per uno o dopo il completamento di rsync?


23

Ho un comando rsync in un'applicazione che copia il contenuto di una cartella su un'altra macchina. Ho l'opzione --remove-source-filesperché sono interessato ad avere i file sul computer di destinazione solo dopo che rsync è terminato.

Tuttavia, mi chiedevo come si comporta rsync se si arresta in modo anomalo o viene interrotto durante il trasferimento di file?

Considera che ho due file da sincronizzare ae b. Rsync eseguirà la copia a, quindi lo eliminerà dall'origine e inizierà a copiare boppure attenderà entrambi ae bverrà copiato sul computer di destinazione prima di eliminarli entrambi? Ho visto che puoi configurare questo comportamento quando elimini file estranei con alcuni flag, ma non ho trovato nulla sulla rimozione dei file di origine.


simile a stackoverflow.com/questions/7380234/… anche se penso che Kyle possa avere ragione - a volte sembra che rsync attenda il completamento di tutti i file, ma a volte elimina i file prima del completamento. Comunque un po 'confuso.
Chris2048,

Risposte:


16

Il controllo del codice rsync rivela che i file di origine vengono rimossi mentre vengono inviati, anche se potrebbe non accadere immediatamente. rsync esegue il multiplex delle sue operazioni, quindi il messaggio che un file è stato ricevuto correttamente (e può quindi essere eliminato) potrebbe essere memorizzato nel buffer dietro altri dati.


2
Come da mia risposta di seguito, l'ho provato con un paio di file e i file sono stati eliminati solo se l'operazione completa ha avuto esito positivo. Questo mi fa pensare che il segnale "transfer OK" che hai trovato è permeato solo quando l'operazione completa è andata a buon fine.
Daniel Andersson,

5
Se lo provi con più di un paio di file, vedrai i file di origine scomparire prima che venga completato l'intero trasferimento.
Kyle Jones,

sembra che quando si specificano le directory e l'opzione ricorsiva, i file in a non vengono eliminati immediatamente
Andre Holzner,

4

L'ho provato (e potresti farlo facilmente anche tu, per essere sicuro). Vengono rimossi dopo che tutti i file sono stati trasferiti correttamente. Se il trasferimento viene interrotto o si verifica un altro errore, i file di origine non vengono rimossi, anche se alcuni di essi vengono trasferiti correttamente.

EDIT: secondo la risposta di Kyle Jones, il caso potrebbe essere diverso quando sono coinvolti molti file.

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.