Comando ROBOCOPY per eseguire un backup incrementale


31

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ù rapidamente possibile, senza file di registro e con meno testo possibile sullo schermo. I miei file sono tutti da qualche parte all'interno di una cartella (MyFolder) che ha molte sottocartelle nidificate. Per "incrementale" intendo "copia solo ciò che è nuovo o cambiato". Non voglio eliminare alcun file storico nella destinazione, ma se ho modificato un file voglio solo la versione più recente. E se non ho modificato un file, non voglio copiarlo sul file di backup esistente. Di seguito è corretto? (Esecuzione di Win7 Enterprise.)

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

Per favore, nessun suggerimento per nient'altro che robocopy. Non mi è permesso installare nulla. E non mi importa delle cose di sicurezza. Ho delle persone per questo (che io le voglia o no). ;-)


1
È necessaria un'opzione / s o / e per copiare le sottodirectory.
David Marshall,

@DavidMarshall: oops. In realtà lo sapevo. Aggiunto. Allora, sto bene adesso?
dmm,

Sì. Ho usato qualcosa di simile.
David Marshall,

Provalo ora. C'è ancora un mucchio di roba che viene scritta sullo schermo. Come posso liberarmene, nelle corse future?
dmm

3
Un'opzione che può fare la differenza in termini di prestazioni è avere trasferimenti multithread. /MT[:N] Ho una CPU a 4 core, quindi in genere uso qualcosa nella rabbia 8-16 per il mio numero di thread. Figura 2-4 thread per core. Dovresti sicuramente provare con valori diversi sul tuo hardware. Multithreaded aiuta di più quando hai molti file di piccole dimensioni. Se hai un numero limitato di file di grandi dimensioni, non sarà altrettanto utile.
Zoredache,

Risposte:


40

Da alcuni anni uso con successo una variante del seguente script:

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

Spiegazione dei parametri

  • L' /MIRopzione (equivalente a /E /PURGE) sta per "mirror" ed è l'opzione più importante. Considera la cartella di origine come "master", causando la sovrascrittura di eventuali modifiche sul lato di destinazione, che è un'impostazione utile per un backup.

  • /FFTè un'opzione molto importante, in quanto consente una differenza di 2 secondi quando si confrontano i timestamp dei file, in modo che le differenze di clock minori tra il computer e il dispositivo di backup non siano importanti. Ciò assicurerà che vengano copiati solo i file modificati, anche se i tempi di modifica dei file non sono esattamente sincronizzati.

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

  • /Z copia i file in "modalità riavvio", quindi i file parzialmente copiati possono essere continuati dopo un'interruzione.

  • /NPe /NDLsopprimere alcune output di debug, è possibile inoltre aggiungere /NS, /NC, /NFLper ridurre ulteriormente la quantità di output (vedere la documentazione per i dettagli). Tuttavia, suggerirei di stampare alcuni output di debug durante le prime esecuzioni, per assicurarsi che tutto funzioni come previsto.

Ulteriori parametri utili citati da altri utenti

  • /XJDesclude "punti di giunzione" per directory, collegamenti simbolici che potrebbero causare problemi come loop infiniti durante il backup. Vedi i commenti di Brian per i dettagli.

  • /MT[:N]utilizza il multithreading e può accelerare i trasferimenti di molti file di piccole dimensioni. Per N, un valore di 2-4 volte il numero di core dovrebbe fare su una macchina normale. Commentato da Zoredache sulla domanda originale.

Modifica in risposta al commento di Granger:

Se vuoi davvero conservare i file esistenti sulla destinazione, ma non sul lato sorgente, sostituisci semplicemente l' /MIRopzione con /E. Tuttavia, consiglio vivamente di utilizzare /MIRquando si desidera utilizzare la destinazione per backup incrementali. Altrimenti tutti i file che sono stati rinominati o spostati alla fonte ingombreranno la destinazione, il che significa che otterrai duplicati. Di solito creo una sottocartella "backup" sulla destinazione che contiene una copia 1: 1 della mia struttura di cartelle di origine. In questo modo è ancora possibile conservare i file storici accanto alla cartella di backup e rimuoverli o riorganizzarli in modo sicuro in seguito.


Questo comando consente di copiare file con autorizzazioni? robocopy C: \ fonte M: \ destinazione / MIR / FFT / R: 3 / W: 10 / Z / NP / NDL
Shabeer Sher

4
Tranne / MIR (/ PURGE) eliminerà i file nella destinazione che non esistono più alla fonte. La domanda posta esplicitamente affermava che non era voluto.
Granger,

@Shabeer No, per impostazione predefinita Robocopy copia solo i dati (D), gli attributi (A) e i timestamp (T). Altri valori devono essere specificati con il parametro "/ copy: <valore>", ad es. "/ Copy: DATS" per includere le autorizzazioni ACL. Ma dal momento che copio su un NAS basato su Linux, non ha molto senso per me.
pederpansen,

1
@Brian Grazie per il suggerimento. Non ho mai avuto problemi con i punti di giunzione, ma suppongo che non farà male evitarli per ogni evenienza. Aggiunto nella mia risposta.
pederpansen,

1
@pederpansen: tende a succedere quando si copiano le cartelle utente (o si copia un'intera unità). Di solito la cartella dei dati dell'applicazione è colpevole, poiché ha un punto di giunzione per motivi di compatibilità dell'applicazione. Prova a eseguire "cd C: \ Users \ [USERFOLDER] \ AppData \ Local \ Application Data \ application data \ application data \" da un prompt dei comandi se vuoi vedere un percorso infinito di esempio. Funziona anche su Windows 10.
Brian,

8

Mi piace usare quanto segue:

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 ( /bopzione) possa fare una copia dei file in uso.

Altre opzioni non correlate alla natura incrementale del backup sono:

/XD per escludere le directory dal backup.

/XJD per escludere i punti di giunzione ("La mia musica").

/R:0 per impostare i tentativi su tentativi falliti su 0.

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

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

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.