2014-09-19 21:03:44 +0000 2014-09-19 21:03:44 +0000
32
32

Comando ROBOCOPY per fare un backup incrementale

Sono sopraffatto dalla documentazione di ROBOCOPY. Voglio fare un backup incrementale dei miei file locali sull'unità di rete (M). Voglio che venga eseguito il più velocemente possibile, senza file di log e con meno testo possibile sullo schermo. I miei file sono tutti da qualche parte dentro una cartella (MyFolder) che ha molte sottocartelle annidate. Per “incrementale” intendo “copiare solo ciò che è nuovo o cambiato”. Non voglio cancellare nessun file storico nella destinazione, ma se ho cambiato un file voglio solo la versione più recente. E se non ho cambiato un file, allora non voglio copiarlo sul file di backup esistente. È corretto? (Esecuzione di Win7 Enterprise.)

robocopy C:\MyFolder M:\MyFolder /z /np /xo /e

Per favore, nessun suggerimento per qualcosa che non sia robocopy. Non posso installare nulla. E non mi interessa la sicurezza. Ho delle persone per quello (che le voglia o no). ;-)

Risposte (2)

43
43
43
2014-10-26 14:25:57 +0000

Ho usato con successo una variante del seguente script per alcuni anni:

robocopy C:\source M:\destination /MIR /FFT /R:3 /W:10 /Z /NP /NDL

Parametri spiegati

  • L'opzione /MIR (equivalente a /E /PURGE) sta per “mirror” ed è l'opzione più importante. Considera la tua cartella sorgente come “master”, facendo sì che robocopy copi/mirror ogni cambiamento nella sorgente (nuovi file, cancellazioni ecc.) nella destinazione, che è un'impostazione utile per un backup.

  • /FFT è un'opzione molto importante, in quanto permette una differenza di 2 secondi quando si confrontano i timestamp dei file, così che le piccole differenze di orologio tra il tuo computer e il tuo dispositivo di backup non hanno importanza. Questo assicurerà che solo i file modificati siano copiati, anche se i tempi di modifica dei file non sono esattamente sincronizzati.

  • /R:3 specifica il numero di tentativi, se la connessione dovesse fallire, e /W:10 specifica un tempo di attesa di 10 secondi tra i tentativi. Queste sono opzioni utili quando si fa il backup su una rete.

  • /Z copia i file in “restart mode”, così i file parzialmente copiati possono essere continuati dopo un'interruzione.

  • /NP e /NDL sopprimono un po’ di output di debug, puoi aggiungere /NS, /NC, /NFL per ridurre ulteriormente la quantità di output (vedi la documentazione per dettagli). Tuttavia, suggerirei di stampare un po’ di output di debug durante le prime esecuzioni, per assicurarsi che tutto funzioni come previsto.

Altri parametri utili menzionati da altri utenti

  • /XJD esclude i “punti di giunzione” per le directory, link simbolici che potrebbero causare problemi come loop infiniti durante il backup. Vedi i commenti di Brian per i dettagli.

  • /MT[:N] usa il multithreading e può velocizzare i trasferimenti di molti piccoli file. Per N, un valore di 2-4 volte il numero di core dovrebbe andare bene su una macchina normale. Commentato da Zoredache sulla domanda originale.

Modifica in risposta al commento di Granger:

Se vuoi davvero mantenere i file che esistono sulla destinazione, ma non sul lato sorgente, sostituisci semplicemente l'opzione /MIR con /E. Tuttavia, suggerirei fortemente di usare /MIR quando si vuole usare la destinazione per i backup incrementali. Altrimenti qualsiasi file che è stato rinominato o spostato all'origine ingombrerà la destinazione, il che significa che otterrete dei duplicati. Di solito creo una sottocartella “backup” sulla destinazione che contiene una copia 1:1 del mio albero di cartelle sorgente. In questo modo puoi ancora tenere in giro i file storici accanto alla cartella di backup e rimuoverli o riorganizzarli in modo sicuro in seguito.

8
8
8
2015-01-20 18:58:26 +0000

Mi piace usare il seguente:

robocopy "C:\Users\<user>" "F:\robocopy\<user>" /XJD /R:0 /XA:SH /E /ZB /XO /XD "Downloads" "AppData" /LOG:robocopy.log /TEE

Lo eseguo come amministratore in modo che la modalità di backup (opzione /b) possa fare una copia dei file in uso.

Altre opzioni non legate alla natura incrementale del backup sono:

/XD per escludere le directory dal backup.

/XJD per escludere i punti di giunzione (“My Music”).

/R:0 per impostare a 0 il retry sui tentativi falliti.

/XA:SH per saltare i file nascosti e di sistema.

Per rimuovere quante più informazioni di log possibile, aggiungi le seguenti opzioni /NP /NS /NDL /NFL /NC.