Come confrontare i contenuti di due cartelle e sincronizzarli

Supponiamo che tu abbia eseguito un'attività di backup XCopy, SyncToy o qualsiasi altro strumento per copiare una determinata directory in una posizione diversa. Se si utilizza Microsoft SyncToy, è possibile che a volte i file o le cartelle non siano presenti nella destinazione o che la cartella di destinazione contenga file o cartelle extra che non si trovano nella cartella di origine.

Questo articolo spiega come confrontare la struttura delle directory (insieme ai file) in due diversi percorsi di directory per assicurarsi di disporre di una replica esatta o di una copia speculare dell'origine. Alcuni dei metodi di seguito illustrano anche come sincronizzare gli elementi in due cartelle dopo il confronto.

Esistono 12 metodi di confronto delle cartelle (per Windows) discussi in questo articolo. Scegli quello più adatto a te. Se è necessario verificare l'integrità del file dopo la sincronizzazione, utilizzare una delle seguenti procedure di verifica del checksum hash elencate.

Confronta i contenuti di due cartelle utilizzando Microsoft WinDiff

WinDiff è uno strumento grafico di confronto dei file di Microsoft che è stato rilasciato per la prima volta nel 1992 e successivamente aggiornato. Per favore resta in linea! Non lasciarti sorprendere dall'anno della versione iniziale.

WinDiff è ancora fantastico e funziona perfettamente in Windows 10, ma non supporta Unicode. Ha un potenziale enorme. WinDiff può confrontare file ASCII e binari, confrontare due directory e sincronizzare le cartelle (cartella sinistra → cartella destra o viceversa).

Link per il download di WinDiff (mirror locale). L'ultima versione di WinDiff aggiornata è la 5.2.3790.0 con il timbro Data modificato che mostra il 4-7-2016.

È inoltre possibile scaricare WinDiff come parte del pacchetto Strumenti di supporto di Windows XP ed estrarne il contenuto utilizzando 7-Zip.

Per fare un confronto tra directory usando WinDiff:

  1. Avviare Windiff.exe.
  2. Nel menu file, fare clic su Confronta directory.
  3. Nella finestra di dialogo Seleziona directory, digitare i due nomi di cartella che si desidera confrontare nelle caselle Dir1 e Dir2. Se si desidera confrontare ricorsivamente i file in tali cartelle, abilitare la casella di controllo Includi sottodirectory .

I risultati o la finestra di struttura per impostazione predefinita mostrano i file identici e le differenze. Puoi nascondere file identici disabilitando Mostra file identici dal menu Opzioni.

Come puoi vedere, WinDiff non sta solo confrontando i nomi dei file, ma confronta anche i contenuti dei file in entrambe le posizioni ed evidenzia le modifiche se i contenuti dei file sono diversi.

Facendo doppio clic sull'elemento "diverso" si apre la vista di confronto con codice colore. I risultati con codice colore indicano quali sono le differenze tra i file.

WinDiff può eseguire il confronto ASCII e binario. Ciò significa che WinDiff non si basa sulla data modificata ma confronta il contenuto effettivo dei file.

Ad esempio, ho modificato un personaggio in un file di testo nella cartella di destinazione (cartella destra). Ho sostituito un punto esclamativo con due punti e la dimensione del file è esattamente la stessa (1.127 byte) in entrambe le posizioni. WinDiff lo raccolse e mostrò che i file sono diversi.

Per salvare le differenze di confronto delle directory in un file, fare clic su Salva elenco file nel menu File. Digitare un nome file con percorso completo senza virgolette doppie.

Deseleziona File identici e Includi opzioni checksum e fai clic su OK. Il file di output sarà simile al seguente:

 - D: \ Siti Web \ Winhelponline \ blog \ wp-content \ uploads \ 2019: E: \ RameshPC-Synced Backup \ We Sites \ Winhelponline \ blog \ wp-content \ uploads \ 2019 - include solo sinistra, solo destra, file diversi. \ accesschk.exe solo in E: \ Backup sincronizzato RameshPC \ Siti Web \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ compare-cartelle.txt solo in E: \ Backup sincronizzato RameshPC \ Siti Web \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ Fta-1803-w10.txt solo in E: \ RameshPC-Synced Backup \ We website \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ Ssh-command-utile .txt solo in E: \ Backup sincronizzato RameshPC \ Siti Web \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 05 \ dell-supportassist.png solo in D: \ We website \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 05 \ disable-theme-sync-ramesh.png differente (E: \ RameshPC-Synced Backup \ We website \ Winhelponline \ blog \ wp-content \ uploads \ 2019 è più recente). \ 05 \ file-explorer- not-highlight-files.png solo in D: \ We Sites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 05 \ firefox-dimenticare-about-this-site-4.png differisce nt (E: \ Backup sincronizzato RameshPC \ Siti Web \ Winhelponline \ blog \ wp-content \ uploads \ 2019 è più recente). \ 05 \ msconfig-disable-services-non-microsoft.png solo in D: \ We Sites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 05 \ windows-store-error-0x800706d9.png solo in D: \ We website \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ notepad-bing-search .png solo in E: \ Backup sincronizzato RameshPC \ Siti Web \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ rundll32-refresh-command.txt solo in E: \ RameshPC-Synced Backup \ We Sites \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ archives \ 404chk.vbs solo in E: \ RameshPC-Synced Backup \ We website \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ archives \ actxprxy-missing -issues.txt solo in E: \ Backup sincronizzato RameshPC \ Siti web \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ archives \ apps.png solo in E: \ Backup sincronizzato RameshPC \ Siti web \ Winhelponline \ blog \ wp-content \ uploads \ 2019. \ 06 \ archives \ articles.vbs solo in E: \ RameshPC-Synced Backup \ We website \ Winhelponline \ blog \ wp-content \ upl oads \ 2019. \ 06 \ archives \ bash-sh.vbs solo in E: \ Backup sincronizzato RameshPC \ Siti web \ Winhelponline \ blog \ wp-content \ uploads \ 2019 - 17 file elencati 

Poiché il file di output è in formato delimitato da tabulazioni, dovresti essere in grado di importare facilmente in Microsoft Office Excel o Fogli Google.

Si noti che è possibile avviare WinDiff direttamente con i percorsi di origine e destinazione come opzioni aggiuntive per il confronto delle directory. Ad esempio, l'avvio di windiff.exe "c:\source" "d:\destination" avvia lo strumento e confronta immediatamente i due percorsi delle cartelle.

Opzioni della riga di comando di WinDiff

Ecco l'elenco completo delle opzioni della riga di comando di WinDiff.

 Uso: windiff [opzioni] percorso1 [percorso2] Opzioni: -D Confronta solo una directory. -F [flags] savefile Salva il file composito in 'savefile'. Le "bandiere" possono essere costituite da uno o più di I (identico), L (sinistro), R (destro), F (spostato leFt), G (spostato riGht), S (simile a sinistra), A (similiAr a destra), X (esci dopo aver salvato la lista). (ad es. -FLF salva l'elenco delle linee Sinistra o spostate-leFt). -I file Legge l'elenco dei file da confrontare, dal file di input specificato. Ogni riga può contenere uno o due nomi di file, spazio delimitato (con virgolette, se i nomi di file contengono spazi). Usa "-" come nome del file per leggere da stdin. Se una riga contiene solo un nome file, il file viene confrontato con se stesso. -N nome NET INVIA notifica a 'nome' alla fine del confronto. -O Vista struttura (nessuna espansione automatica). -P Confronto perverso: rompe le linee sulla punteggiatura. -S [flags] savefile Salva l'elenco dei file in 'savefile'. I 'flag' possono essere costituiti da uno o più di S (stesso), L (sinistro), R (destro), D (diverso), X (esci dopo aver salvato l'elenco). (es. -SLD salva l'elenco dei file di sinistra o diversi). -T Confronta l'intera sottostruttura. 

Per salvare il rapporto di confronto in un file usando l' -S . Gli esempi sono di seguito:

Salvare l'elenco di file identici in diff.txt:

 -SS D: \ output \ diff.txt c: \ cartella1 d: \ cartella2 

Salvare l'elenco di file diversi in diff.txt:

 -SD D: \ output \ diff.txt c: \ cartella1 d: \ cartella2 

Salvare l'elenco dei file di solo sinistra in diff.txt:

 -SL D: \ output \ diff.txt c: \ cartella1 d: \ cartella2 

Salva l'elenco dei file di solo destra in diff.txt:

 -SR D: \ output \ diff.txt c: \ cartella1 d: \ cartella2 

Salva l'elenco dei file di solo sinistro E solo di destra in diff.txt:

 -SLR D: \ output \ diff.txt c: \ cartella1 d: \ cartella2 

Per uscire automaticamente da WinDiff dopo aver salvato il rapporto di confronto, aggiungere l'opzione X, come di seguito:

Salvare l'elenco dei file di solo destra in diff.txt ed uscire da WinDiff

 -SRX D: \ output \ diff.txt c: \ cartella1 d: \ cartella2 

Salvare l'elenco dei file di solo sinistro E solo di destra in diff.txt ed uscire da WinDiff

 -SLRX D: \ output \ diff.txt c: \ cartella1 d: \ cartella2 

Per generare tutti e 5 i singoli file di "registro" dovresti eseguire WinDiff 5 volte.

Esempio:

 windiff -SSX identici.txt c: \ folder1 d: \ folder2 windiff -SDX different.txt c: \ folder1 d: \ folder2 windiff -SLX left-only.txt c: \ folder1 d: \ folder2 windiff -SRX right-only .txt c: \ folder1 d: \ folder2 windiff -SLRX left-right-only.txt c: \ folder1 d: \ folder2 

Vedere anche Contenuto del file della Guida di WinDiff (windiff.hlp) in formato HTML.

Sincronizza le cartelle con WinDiff

Cosa c'è di più? WinDiff può anche copiare i file mancanti o diversi nella posizione sinistra (Cartella 1) o destra (Cartella 2). Fare così,

  1. Dal menu File, selezionare Copia file
  2. Digitare il percorso della cartella in cui si desidera copiare i file mancanti / diversi.

    Importante: non utilizzare le virgolette doppie attorno al percorso della cartella anche se il percorso della cartella contiene spazi. WinDiff non riesce a copiare i file se si aggiungono virgolette doppie al percorso.

  3. Scegli la copia dalla posizione (albero sinistro a albero destro o viceversa)
  4. Deseleziona File identici e fai clic su OK.

    WinDiff ora sincronizza la cartella copiando i file mancanti e modificati in modo ricorsivo nella posizione specificata (sinistra → destra).

Nonostante l'eccellente confronto ASCII e binario e le funzionalità di sincronizzazione di base, WinDiff è spesso uno strumento sottovalutato tra le persone IT. Questo perché sfoggia un'interfaccia utente obsoleta e non ha supporto Unicode. Ma WinDiff è sufficiente per la maggior parte di noi, in particolare per coloro che utilizzano il sistema operativo in lingua inglese.

Microsoft ha un articolo della knowledge base su WinDiff, intitolato Come utilizzare l'utilità Windiff.exe che potresti voler controllare.

Confronta i contenuti di due cartelle usando WinMerge

Ecco come confrontare due cartelle con le sottocartelle, usando WinMerge.

WinMerge è uno strumento di differenziazione e fusione Open Source per Windows. Può confrontare cartelle e file, presentando differenze in un formato di testo visivo di facile comprensione e gestione. Usiamolo per confrontare i contenuti di due cartelle con le loro sottocartelle (cioè ricorsivamente).

  1. Avvia WinMerge. Dal menu File, fai clic su Apri

  2. Sfoglia per selezionare la prima cartella e la seconda cartella per il confronto.
  3. Assicurarsi che il filtro sia impostato su *.* modo che tutti i file vengano confrontati. L'opzione "Includi sottocartelle" (confronta ricorsivamente) è abilitata per impostazione predefinita. Se si desidera confrontare i file solo nella directory di livello superiore, deselezionare l'opzione.
  4. Fai clic su Confronta

    WinMerge genera risultati di confronto delle cartelle, evidenziando le differenze di colore giallo.

  5. Dal menu Strumenti, fai clic su Personalizza colonne .... Scegli le colonne che desideri, come Left size, Left size Right size, Left date, Right date tra le numerose altre opzioni di colonna fornite.

  6. Espandi la voce "Le cartelle sono diverse " facendo doppio clic su di essa. Mostra l'elenco di file diversi, " solo a sinistra ", " solo a destra " e anche i file identici .

    Nota: è possibile scegliere di nascondere i file e le cartelle identici deselezionando “Mostra elementi identici” dal menu Visualizza in WinMerge.

Il vantaggio dell'utilizzo di WinMerge è che offre cinque diversi metodi di confronto dei file tra cui scegliere:
  1. Contenuto completo (impostazione predefinita): confronto completo dei file per contenuto, con tutte le campane e fischietti. Questo metodo richiama plug-in e utilizza il motore diffutils per una differenziazione completamente accurata e il rilevamento dei blocchi spostati. Questo è il metodo più completo e raccomandato.
  2. Contenuto rapido: confronto ridotto dei file per contenuto. Questo metodo utilizza un codice di confronto file semplificato che salta i plug-in e sposta il rilevamento dei blocchi. Questo metodo è più veloce del contenuto completo, perché non carica i file. Lo svantaggio è che i filtri di linea non vengono applicati durante il confronto. Ad esempio, questo metodo vede il file come diverso anche se i filtri di linea sono impostati per ignorare tutte le differenze nei file.
  3. Data modificata: confronta solo le date di modifica sui file, quindi è molto più veloce di uno dei metodi di contenuto. Ma ovviamente, è preciso solo come le date di modifica.
  4. Data e dimensioni modificate: simile alla data modificata, ma controlla anche le dimensioni del file quando le date sono identiche.
  5. Dimensioni: confronta solo le dimensioni dei file, quindi è veloce ma non accurato come i metodi di contenuto.

WinMerge supporta molte opzioni della riga di comando. Consulta il manuale di WinMerge per l'intero elenco di opzioni della riga di comando supportate.

Sincronizza le cartelle con WinMerge

Se hai deselezionato Mostra elementi identici dal menu Visualizza in WinMerge, ti mostrerà solo l'elenco dei file modificati, solo sinistro e solo destro. È facile sincronizzare gli elementi da sinistra → destra o viceversa.

Tutto quello che devi fare è selezionare i file (o selezionare tutto), fare clic con il tasto destro del mouse sulla selezione e fare clic su Copia. Nel sottomenu Copia, scegli una delle opzioni:

  1. Da sinistra a destra: copia i file selezionati dalla cartella sinistra a destra.
  2. Da sinistra a ...: copia i file dalla cartella di sinistra a un'altra cartella.
  3. Da destra a sinistra: copia i file selezionati dalla cartella destra a sinistra.
  4. Diritto a ... : copia i file dalla cartella giusta in un'altra cartella.


Metodo 3: Come confrontare i file in due cartelle usando FreeFileSync

FreeFileSync è un software di confronto e sincronizzazione di cartelle software open source che crea e gestisce copie di backup di tutti i tuoi file importanti.

  1. Scarica FreeFileSync e installalo.
  2. Per confrontare le cartelle in base al contenuto del file anziché alla dimensione del file o alla data di modifica, selezionare Contenuto del file nelle opzioni Confronta. Tuttavia, il confronto per dimensione del file sarà molto più rapido e dispendioso in termini di risorse.
  3. Seleziona la cartella sinistra e la cartella destra.
  4. Fare clic sul pulsante Confronta (Contenuto file) .

    Confronta gli elementi nelle due cartelle in modo ricorsivo e mostra l'elenco dei file nuovi e modificati.

    I file identici sono nascosti nell'output. Mostra i file di sola sinistra, i diversi file e i file di sola destra per impostazione predefinita e le opzioni possono essere attivate usando i pulsanti nella parte inferiore della finestra di FreeFileSync.

Sincronizza le cartelle usando FreeFileSync

FreeFileSync offre le seguenti opzioni di sincronizzazione simili a Microsoft SyncToy.

  1. Sincronizzazione bidirezionale: identifica e applica le modifiche su entrambi i lati. Eliminazioni, spostamenti e conflitti vengono rilevati tramite un database.
  2. Specchio: il mirroring è Sinistra → Sincronizzazione destra. La cartella destra diventerà una copia speculare della cartella sinistra. È uguale all'opzione Eco di Microsoft SyncToy e alla riga di comando robocopy / mir. I file e le cartelle extra nella cartella giusta vengono rimossi e vengono sostituiti file diversi.
  3. Aggiornamento: questa opzione di sincronizzazione esegue una sincronizzazione della cartella sinistra → Cartella destra simile all'opzione Mirror . Tuttavia, questa opzione non elimina i file e le cartelle extra nell'albero delle cartelle a destra. È simile all'opzione Contribute di Microsoft SyncToy.
  4. Personalizzato: oltre alle tre opzioni predefinite sopra riportate, l'opzione Personalizzata consente di scegliere l'azione predefinita su come gestire un file di sola sinistra, un file modificato o il solo file di destra. Ad esempio, è possibile configurarlo per eliminare file identici se il requisito è di avere solo file univoci (eliminare i duplicati) nelle cartelle sinistra e destra. Nella maggior parte dei casi, non è necessario scegliere l'impostazione Personalizzata a meno che non si abbia un requisito speciale.

Per impostazione predefinita, esegue la sincronizzazione bidirezionale. Personalmente, preferisco il backup Mirror per i progetti del mio sito Web e l'opzione Aggiorna backup per i documenti. Scegli una delle opzioni di sincronizzazione di conseguenza.

Nei risultati del confronto, tutti i file sono selezionati per impostazione predefinita. È possibile escludere un file dalla sincronizzazione deselezionando la casella di controllo accanto al nome del file o tramite il menu di scelta rapida.

  • Per sincronizzare tutti gli elementi visualizzati nell'elenco, fare clic sul pulsante Sincronizza in alto.
  • Per sincronizzare un determinato file o un set di file, Escludi tutti gli elementi (temporaneamente) tramite il menu di scelta rapida, quindi abilita la casella di controllo per i file selezionati, fai clic con il pulsante destro del mouse sulla selezione e fai clic su Sincronizza selezione, quindi fai clic su Avvia .

Questo è tutto! Le cartelle sono ora sincronizzate e le operazioni di copia / aggiornamento / eliminazione vengono registrate da FreeFileSync.

Confronta e sincronizza una cartella locale vs. Cartella FTP in modo ricorsivo

FreeFileSync può anche confrontare una cartella locale rispetto a Google Drive o una cartella locale rispetto a una cartella del server FTP in modo ricorsivo utilizzando la connessione FTP o SFTP. Ecco come confrontare e sincronizzare una cartella locale e sottocartelle con una cartella sul tuo server FTP.

Tutto quello che devi fare è fare clic sul pulsante Accedi alla memoria online accanto al pulsante Sfoglia nel riquadro sinistro o sul lato destro. Facendo clic su quel pulsante si apre la seguente finestra di dialogo:

Immettere le informazioni di connessione FTP o SFTP, le credenziali e il percorso della directory FTP per confrontarle con la cartella locale.

Una volta fatto, ora sei tornato alla finestra di confronto.

Scegliere la dimensione del file o il metodo di confronto tra tempo e dimensione del file . Quest'ultimo metodo di confronto è più affidabile.

Seleziona la variante di sincronizzazione. A questo scopo ho impostato il mio su 2-way sync (anziché Mirror ).

Una volta configurato, fai clic su Confronta. Vedrai l'elenco dei file mancanti e diversi nella cartella sinistra e destra.

Fare clic sul pulsante Sincronizza per copiare i file in entrambi i modi, poiché è stata selezionata la sincronizzazione a 2 vie. Se si desidera aggiornare solo la posizione FTP, selezionare invece Sincronizzazione mirror .

Esegui FreeFileSync come processo batch | Sincronizzazione della riga di comando

È possibile salvare la configurazione precedente in un processo batch ed eseguirla tramite riga di comando o Utilità di pianificazione. Per salvare la configurazione ed eseguirla utilizzando la riga di comando, attenersi alla seguente procedura:

  1. Fare clic sull'opzione Salva come processo batch ... dal menu File.

  2. È possibile configurare il processo batch per l'esecuzione in modalità ridotta e chiudere automaticamente la finestra al termine della sincronizzazione.

  3. Salvare il file del processo batch in una cartella a scelta, ad esempio d: \ BatchRun.ffs_batch
  4. Quindi, per sincronizzare le cartelle utilizzando la riga di comando, utilizzare la sintassi della riga di comando seguente:
     C: \ Programmi \ FreeFileSync \ FreeFileSync.exe d: \ BatchRun.ffs_batch 

    È possibile creare un file batch di Windows o eseguire il comando sopra tramite l'Utilità di pianificazione a intervalli periodici, se lo si desidera.

Suggerimento: FreeFileSync può anche sincronizzare le cartelle con Google Drive.


Metodo 4: Come confrontare i file in due cartelle utilizzando TotalCommander

Total Commander è un file manager per Windows che consente di copiare, spostare o eliminare file. Total Commander può fare molto di più. Può comprimere e decomprimere file, accedere a server FTP, confrontare file per contenuto, ecc.

  1. Avvia Total Commander e seleziona la cartella sinistra e la cartella destra da confrontare.
  2. Dal menu Comandi, fai clic su Sincronizza directory ...

    Con la finestra di dialogo Sincronizza directory, è possibile confrontare due directory tra cui le sottodirectory, quindi copiare i file con differenze nella directory di destinazione o in qualsiasi altra directory.

    Se si sceglie l'opzione Asimmetrica, la cartella destra diventa un mirror della sinistra, simile alla riga di comando RoboCopy / MIR o all'opzione Echo Microsoft SyncToy. Cioè, l'opzione copia i file mancanti o diversi nella cartella giusta e tutti i file e le cartelle extra sulla destra vengono eliminati.

    Puoi scegliere di mostrare file identici o solo i diversi file nell'output.

    Le opzioni di confronto / sincronizzazione di Total Commander spiegate di seguito.

    AsimmetricoSe questa opzione è selezionata, si presume che una copia del lato sinistro debba essere creata sul lato destro. I file che non esistono sul lato sinistro verranno contrassegnati per l'eliminazione sul lato destro. Questa opzione è pensata per i backup.
    subdirsConfronta anche le sottodirectory delle due directory scelte.
    per contenutoConfronta il contenuto dei file che hanno le stesse dimensioni e data. Verifica che anche i file abbiano lo stesso contenuto.
  3. Seleziona le opzioni di confronto "Sottodirati", "per contenuto".

    Importante: se la casella di controllo Ignora data è abilitata, Total Commander non riesce a trovare i file diversi / modificati anche se le dimensioni dei file sono diverse. Sembra essere un bug in Total Commander e posso riprodurlo ogni volta.

  4. Nella sezione Mostra, disabilitare i file uguali (indicato dal simbolo = ) e abilitare gli altri tre pulsanti.
  5. Abilita le opzioni Singoli e Duplicati .
  6. Premi il pulsante Confronta

Total Commander - Argomenti della riga di comando per il confronto delle cartelle

Per avviare "Sincronizza dirs", è possibile utilizzare la sintassi della riga di comando seguente:

 TOTALCMD64.EXE / S = S d: \ folder_1 d: \ folder_2 

Quindi, configura le opzioni e premi il pulsante Confronta .

Per avviare "Sincronizza dirs" e confrontare le cartelle immediatamente, utilizzare questa sintassi:

 TOTALCMD64.EXE / S = S: = d: \ folder_1 d: \ folder_2 

(il confronto inizierà con le directory passate e le ultime opzioni utilizzate.)

Facoltativamente, puoi anche digitare un nome per le impostazioni nel formato /S=S:SettingsName modo che il confronto inizi immediatamente in base all'impostazione precedentemente salvata.

Sincronizza le cartelle utilizzando TotalCommander

  1. Nella finestra di confronto, selezionare i file che si desidera copiare. Questo viene fatto facendo clic sulla casella di controllo tra le due colonne di confronto o selezionando una delle opzioni nel menu di scelta rapida.

    Per impostazione predefinita, la funzione seleziona tutti i file più recenti per la copia. Per deselezionare un file per impedirne la copia o la sincronizzazione, fare doppio clic sulla freccia. Per deselezionare più file, selezionare i file, fare clic con il tasto destro del mouse sugli elementi e scegliere Rimuovi selezione

    Importante: se l'opzione Asimmetrica non è abilitata, se un file nella cartella destra è più recente di quello nella cartella sinistra, la sincronizzazione verrà eseguita da Destra → Sinistra per quel file. Per cambiarlo in altro modo, fai clic sulla freccia accanto al file, che cambia la direzione della sincronizzazione.

    In alternativa, è possibile fare clic con il pulsante destro del mouse sul file e scegliere Inverti direzione di copia per modificare la direzione di sincronizzazione.

  2. Fai clic su Sincronizza . Questo aprirà una finestra di dialogo per copiare i file selezionati.

    Per impostazione predefinita, si sincronizza in entrambi i modi. Se si desidera sincronizzare in un modo - ad es., Cartella sinistra → cartella destra, deselezionare la casella di controllo Da destra a sinistra e viceversa.

Suggerimento: utilizzando Total Commander, è anche possibile sincronizzare una directory locale e una directory su un server FTP.


Metodo 5: confronta e sincronizza le cartelle in tempo reale utilizzando DSynchronize

DSynchronize è uno strumento utile che consente di sincronizzare due cartelle manualmente o automaticamente in tempo reale. Questo strumento offre molte opzioni rispetto a qualsiasi altro strumento di sincronizzazione delle cartelle per configurare la modalità di sincronizzazione dei file.

  1. Avviare DSynchronize e configurare le cartelle di origine e destinazione.
  2. È possibile assegnare un nome lavoro personalizzato (per l'automazione successiva) facendo clic sul pulsante LAVORI. Impostiamo il nome del lavoro come Uploads
  3. Per la sincronizzazione del mirror, assicurarsi che la sincronizzazione bidirezionale sia disabilitata.
  4. Per effettuare un confronto (solo) senza sincronizzare le due cartelle, abilitare l'opzione Anteprima sincronizzazione nella sezione Generale.

  5. Fare clic sul pulsante Sincronizza per visualizzare l'elenco di file nuovi, aggiornati e mancanti in entrambe le posizioni.

Sincronizza cartelle

Per sincronizzare le cartelle, deseleziona l'opzione Anteprima sincronizzazione nella sezione Generale e fai clic su Sincronizza . Fa una sincronizzazione in modalità Mirror per impostazione predefinita. La modalità specchio è stata discussa in questo articolo in precedenza. La modalità Mirror assicura che la cartella destra sia esattamente la stessa della cartella sinistra. Eventuali directory e file aggiuntivi nella destinazione vengono rimossi automaticamente.

Sincronizzazione in tempo reale

Per sincronizzare due cartelle in tempo reale:

  1. Fai clic sulla sincronizzazione in tempo reale nella sezione Timer.
  2. Configurare le impostazioni di sincronizzazione in tempo reale come desiderato. Ho usato le impostazioni predefinite.

    Per impostazione predefinita, sincronizza automaticamente le cartelle dopo un intervallo di 10 secondi. È possibile configurarlo per rinviare ulteriormente o pianificarne l'esecuzione a intervalli specificati.

  3. Abilita la casella di controllo Controlla sottocartelle per sincronizzare le cartelle in modo ricorsivo .

Ho copiato alcuni file nella cartella sinistra (sorgente), e in 10 secondi gli elementi sono stati sincronizzati automaticamente con la cartella destra. Puoi vederlo in questa GIF animata:

Inoltre, le modifiche (aggiunte ed eliminazioni di file o cartelle) vengono registrate nella finestra principale.

Quando la sincronizzazione in tempo reale è abilitata, controlla le modifiche ai file e il programma si trova nell'area di notifica in attesa di modifiche. Non richiede molte risorse o memoria della CPU. L'ultima volta che ho controllato, ha usato solo circa 10 MB di memoria.

Ecco l'elenco delle caratteristiche salienti di DSynchronize:

  • Sincronizzazione standard e timer.
  • Sincronizzazione RealTime.
  • Sincronizzazione bidirezionale.
  • Sincronizzazione transazionale (dal journal di NTFS).
  • Filtro selettivo (è possibile escludere singoli file o cartelle).
  • Avvia come servizio (il programma non ha bisogno di accedere).
  • Supporta collegamenti simbolici e collegamenti reali.
  • Supporta giunzioni e punti di montaggio.
  • Supporta ACL.
  • Registro inviato via e-mail.
  • Backup della versione precedente dei file sostituiti.
  • Confronto byte per byte.
  • Supporta più lavori, ognuno con le sue impostazioni e i percorsi di sincronizzazione.
  • Consumo minimo di risorse (RAM e CPU).

Supporto da riga di comando

È possibile utilizzare la seguente riga di comando per automatizzare DSynchronize:

/START = Inizia la sincronizzazione con le ultime opzioni salvate.

/STARTJOB "JobName" = Avvia sincronizzazione con le opzioni del lavoro selezionate).

/MINIMIZE = Inizia minimizzato nella barra dei vassoi.

/HIDDEN = Non visualizzare l'icona nella barra delle applicazioni.

/NOSECURITYCHECK = Non effettuare controlli di sicurezza prima della sincronizzazione.

/NOMONITORCHECK = Non controlla la risoluzione del monitor.

/AUTOREALTIME = Inizia minimizzato, esegue una sincronizzazione standard e attiva RealTime.

/SOMEFILE.INI = Inizia utilizzando il file INI selezionato.

Il nome del lavoro può essere personalizzato facendo clic sul pulsante LAVORI nella parte superiore della finestra principale del programma.

Ad esempio, per sincronizzare automaticamente due cartelle (processo precedentemente salvato denominato "Uploads"), esegui questo comando:

 "D: \ dsynchronize \ DSynchronize.exe" / STARTJOB "Uploads" / MINIMIZE 

Per sincronizzare le due cartelle (processo denominato "Uploads) e attivare la sincronizzazione in tempo reale, eseguire:

 "D: \ dsynchronize \ DSynchronize.exe" / STARTJOB "Uploads" / AUTOREALTIME 

Il comando sopra sincronizza le due cartelle denominate nel lavoro e attiva automaticamente il monitoraggio in tempo reale. È possibile visualizzare l'icona di monitoraggio in tempo reale nell'area di notifica.

Questo è tutto!


Metodo 6: confrontare due cartelle con l'utilità HashMyFiles utilizzando Checksum hash file

HashMyFiles è una piccola utility che calcola i checksum hash per i tuoi file. Può calcolare l'hash per i file in una cartella e le sue sottocartelle in modo ricorsivo. HashMyFiles ti consente di salvare i risultati in un file. Può anche calcolare il checksum hash tramite il menu di scelta rapida.

Se PowerShell non è la tua tazza di tè, usa l'utility HashMyFiles di Nirsoft.net per confrontare gli hash dei file.

È possibile salvare i nomi dei file e l'output hash corrispondente per l'albero delle cartelle di origine in source.txt . Allo stesso modo, salvare le voci per l'albero delle cartelle di destinazione come destination.txt .

In questo esempio, confronteremo i file nelle seguenti cartelle:

 D: \ Siti web \ Winhelponline \ blog \ wp-content \ uploads \ 2019 E: \ RameshPC-Synced Backup \ Siti web \ Winhelponline \ blog \ wp-content \ uploads \ 2019 

Seguire questi passaggi per generare hash di file utilizzando HashMyFiles e confrontarli:

  1. Scarica HashMyFiles ed eseguilo.
  2. Dal menu Opzioni, fare clic su Tipi di hash e selezionare SHA-256

  3. Dal menu Visualizza, fai clic su Scegli colonne

  4. Nelle Impostazioni colonna, abilita le opzioni SHA-256, Percorso completo e Dimensione file . Clicca OK.
  5. Fai clic sul menu File e seleziona Aggiungi cartella
  6. Seleziona la cartella di origine per il confronto.

  7. Fare clic per selezionare Aggiungi file nelle sottocartelle e fare clic su OK.
  8. Ordina i risultati in base alla colonna Percorso completo e seleziona tutte le voci.
  9. Dal menu File, fai clic su Salva elementi selezionati
  10. Salvare l'elenco in un file denominato source.txt
  11. Cancella i risultati selezionando Cancella tutto dal menu File.
  12. Ripetere i passaggi precedenti e questa volta selezionare la cartella di destinazione, salvare l'elenco su destination.txt
  13. Ora, modifica i file source.txt e destination.txt usando Blocco note e rimuovi i percorsi di base. Usando l'opzione Trova nel Blocco note, trova ogni occorrenza del percorso di base in basso e sostituiscila con una stringa vuota.
     D: \ sito \ Winhelponline \ blog \ wp-content \ 
  14. Allo stesso modo nel file destination.txt, rimuovi questo percorso di base:
     E: \ Backup sincronizzato RameshPC \ Siti Web \ Winhelponline \ blog \ wp-content \ 

    Ti potrebbe piacere anche trovare e rimuovere i simboli = usati come separatori.

    Ecco come appaiono ora i file:

  15. Ora, avvia WinDiff o il tuo strumento di confronto dei file preferito per vedere le differenze.

Vedrai l'elenco di diversi file, file extra e file mancanti.


Metodo 7: Come confrontare i file in due cartelle usando Robocopy

Vediamo ora come utilizzare l'utilità di console Robocopy integrata per confrontare i contenuti di due cartelle.

Robocopy ("Robust File Copy per Windows") è un eccellente strumento di copia file integrato in Windows che ha enormi capacità. Le funzionalità di Robocopy sono al di sopra e al di là dei comandi integrati di copia e XCopy di Windows. RoboCopy è il più preferibile di tutti i metodi della riga di comando perché Robocopy confronta non solo i nomi dei file ma anche l'ultima volta modificata. Riporta l'elenco dei file modificati e dei nuovi file / cartelle nei percorsi di origine e destinazione.

Tra le sue eccellenti caratteristiche vi sono la copia in modalità "mirror" (simile all'opzione " Echo " di Microsoft SyncToy), la possibilità di riprovare la copia in caso di interruzioni della rete, la copia multi-thread, ecc. Oltre alla copia dei file, possiamo usare Robocopy per confrontare il contenuto di due cartelle (ricorsivamente) e registra le differenze senza copiare nulla, come una corsa a secco .

Scenario

I file del mio sito Web vengono sincronizzati su un disco rigido esterno ( E:\ ) regolarmente. A scopo illustrativo, controlliamo se queste due cartelle sono identiche. In questo esempio, confronteremo le seguenti cartelle, in modo ricorsivo (cioè insieme alle sottocartelle, un confronto approfondito):

 D: \ Siti web \ Winhelponline \ blog \ wp-content \ uploads ed E: \ RameshPC-Synced Backup \ We website \ Winhelponline \ blog \ wp-content \ uploads 
  1. Apri una finestra del prompt dei comandi.
  2. Esegui il comando seguente e premi INVIO:
     robocopy "D: \ Siti Web \ Winhelponline \ blog \ wp-content \ uploads" "E: \ RameshPC-Synced Backup \ Siti web \ Winhelponline \ blog \ wp-content \ uploads" / L / TS / MIR / LOG: D: \ diff.txt 

    I risultati del comando precedente vengono registrati nel file D:\Diff.txt .

  3. Esci dalla finestra del prompt dei comandi.

Dettagli sulle opzioni della riga di comando di Robocopy utilizzate

  • /L :: Solo elenco: non copiare, timestamp o eliminare alcun file. Questa opzione è utilizzata solo a scopo di registrazione; per una corsa a secco.
  • /MIR :: MIRror un albero di directory (equivalente a / E plus / PURGE). Dal momento che lo stiamo usando con l' /L, nessun file / cartella verrà effettivamente copiato.
  • /TS :: include i timestamp del file sorgente nell'output.
  • /LOG:file :: invia lo stato al file LOG (sovrascrive il registro esistente).

In questo esempio, stiamo scrivendo l'output su D:\Diff.txt . Ecco come appare il registro:

  ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : Monday, April 8, 2019 5:06:10 PM Source : D:\Websites\Winhelponline\blog\wp-content\uploads\ Dest : E:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads\ Files : *.* Options : *.* /TS /L /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /R:1000000 /W:30 ------------------------------------------------------------------------------ 583 D:\Websites\Winhelponline\blog\wp-content\uploads\ *EXTRA Dir -1 E:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads\2019\videos\ *EXTRA File 821886 2019/04/07 07:19:24 tiktok-superman-dance.mp4 3 D:\Websites\Winhelponline\blog\wp-content\uploads\2019\Scripts\ Older 210 2019/04/08 10:54:59 0x80071A91.vbs Newer 211 2019/04/08 11:35:32 ErrCodeFinder.vbs New File 211 2019/04/08 11:35:32 Sample.vbs 211 D:\Websites\Winhelponline\blog\wp-content\uploads\h1-10\ 83 D:\Websites\Winhelponline\blog\wp-content\uploads\h1-11\ 1 D:\Websites\Winhelponline\blog\wp-content\uploads\reg\ 9 D:\Websites\Winhelponline\blog\wp-content\uploads\temp\ ------------------------------------------------------------------------------ Total Copied Skipped Mismatch FAILED Extras Dirs : 113 0 113 0 0 1 Files : 4125 3 4122 0 0 1 Bytes : 59.96 m 632 59.95 m 0 0 802.6 k Times : 0:00:00 0:00:00 0:00:00 0:00:00 Ended : Monday, April 8, 2019 5:06:10 PM 

Puoi vedere chiaramente le directory e i file extra nell'origine e nelle cartelle di destinazione. Inoltre, confronta il timestamp e ti dice se i file sono più vecchi o più recenti (rispetto allo stesso file nella destinazione).

In questo esempio, ecco le differenze individuate:

  1. * EXTRA Dir : esiste una directory extra nella destinazione ma non nella sorgente.
  2. * File EXTRA : esiste un file extra nella destinazione ma non nella fonte.
  3. Più vecchio : questo file è più vecchio rispetto a quello nella destinazione.
  4. Più recente : questo file è più recente rispetto a quello nella destinazione.
  5. Nuovo file : questo file non esiste nella destinazione. Si chiama anche un file Lonely

Elenco completo delle classificazioni dei file RoboCopy:

 ----------- ----------- ---------------- ------------ --- ------------- ------------ Classifi_ Esiste in Esiste in Origine / Dest Source / Dest Source / Dest cation Origine Destinazione File Tempi Dimensioni file Attributi ----------- ----------- ---------------- ------------ --- ------------- ------------ Più recente Sì Sì Src> dest n / an / a Più vecchia Sì Sì Src <dest n / an / a Nuovo Sì No n / an / an / a Extra No Sì n / an / an / a Modificato Sì Sì Uguale diverso n / a Stesso Sì Sì Uguale Uguale Uguale Ottimizzato Sì Sì Uguale Uguale Diverso Non corrispondente Sì (file) Sì (directory) n (directory) n / an / an / a ----------- ----------- ---------------- ------ --------- ------------- ------------ 

Nota: un file Tweaked è definito come esistente sia nella sorgente che nella destinazione, con dimensioni e timestamp identici, ma impostazioni di attributo diverse.

Robocopy è uno strumento straordinario per confrontare e sincronizzare i file in due cartelle (insieme a sottocartelle a diversi livelli di profondità) ed elencare le differenze in un file di registro.

Sincronizza le cartelle usando Robocopy

Per sincronizzare le cartelle ( solo dalla cartella sinistra → destra) con RoboCopy, utilizzare la stessa sintassi della riga di comando che abbiamo usato in precedenza per confrontare le cartelle, ma questa volta senza l'opzione /L (solo elenco).

RoboCopy esegue una sincronizzazione unidirezionale (dalla cartella sinistra → destra)

La modalità di copia speculare di RoboCopy ( /MIR ) è simile alla funzione " Eco " di Microsoft SyncToy. Ricorda, RoboCopy esegue solo la sincronizzazione sinistra → destra, NON una sincronizzazione bidirezionale.

È importante notare che l' /MIR rimuove anche eventuali file e directory extra nell'albero delle cartelle di destinazione. I file / cartelle "Extra" sono elementi presenti nella destinazione ma non presenti nel percorso di origine. Il comando /MIR (mirror) si assicura che la struttura (e i file) della cartella di destinazione sia una copia esatta dell'origine.

Utilizzare la seguente sintassi della riga di comando per sincronizzare gli elementi dalla cartella sinistra → destra:

 robocopy source_folder destination_folder / MIR / MT 

L' /MT consente di eseguire una copia multi-thread per un'operazione di copia superveloce. È un interruttore opzionale, ma estremamente utile.

Lo stato della sincronizzazione viene emesso nella console per ciascun elemento elaborato e le statistiche vengono visualizzate alla fine dell'output.

Per registrare l'output in un file, utilizzare questa sintassi:

 robocopy source_folder destination_folder / MIR / MT / TS /LOG:D:\Diff.txt 

Automatizza i comandi utilizzando un file batch

È possibile aggiungere tutti i comandi Robocopy al Blocco note e salvarlo come file Windows Batch (con estensione .bat ). Basta fare doppio clic sul file Batch ogni volta che si desidera sincronizzare le cartelle menzionate. È anche possibile eseguire il file batch agli intervalli richiesti utilizzando l'Utilità di pianificazione.


Metodo 8: confrontare due cartelle utilizzando Checksum hash file con l'utilità FCIV

Utilizzando l'algoritmo di hash crittografico, ad esempio MD5, SHA-1, è possibile verificare se due file sono identici o meno. Il checksum è un valore hash utilizzato per eseguire controlli di integrità dei dati sui file. È una specie di firma per un file.

Lo strumento Microsoft File Checksum Integrity Verifier (FCIV) è un'utilità della riga di comando che calcola gli hash crittografici MD5 o SHA1 per i file. È possibile generare l'elenco di file con i loro hash MD5 o SHA1 su un database XML, quindi confrontare i file nella cartella di destinazione con gli hash memorizzati nel file del database XML.

Questo metodo è particolarmente utile dopo aver utilizzato uno dei metodi sopra indicati, ad esempio Robocopy o WinDiff per sincronizzare due cartelle e si desidera verificare l'integrità di ciascun file di destinazione confrontando l'hash / checksum del file con quello della posizione di origine.

Scenario:

Confrontiamo ricorsivamente il contenuto delle seguenti cartelle usando FCIV:

 D: \ Siti Web \ Winhelponline \ blog \ wp-content \ uploads E: \ Backup sincronizzato RameshPC \ Siti web \ Winhelponline \ blog \ wp-content \ uploads 

Scarica Microsoft File Checksum Integrity Verifier dall'Area download ufficiale di Microsoft ed estrai fciv.exe in una cartella, ad esempio d:\tools . Quindi seguire uno di questi metodi:

opzione 1

  1. Aprire una finestra del prompt dei comandi e utilizzare questa sintassi della riga di comando:
     d: \ tools \ fciv.exe -r -add "D: \ We website \ Winhelponline \ blog \ wp-content \ uploads" -bp "D: \ We Sites \ Winhelponline \ blog \ wp-content" -sha1 -xml d: \ hashdb.xml 

    La riga di comando sopra calcola l'hash SHA1 per ciascun file in modo ricorsivo e genera i nomi dei file e gli hash corrispondenti in un file hashdb.xml chiamato hashdb.xml .

    Il parametro -bp viene utilizzato per specificare il percorso di base da rimuovere dal nome percorso completo. Assicura che il percorso di base non sia incluso nell'output XML in modo da poter confrontare gli elementi nel percorso della cartella di destinazione con la stessa struttura di cartelle.

    Ecco come apparirebbe il contenuto del file XML:

  2. Ora, nella finestra del prompt dei comandi, passa alla cartella di destinazione eseguendo il comando seguente:
     cd / d "E: \ Backup sincronizzato RameshPC \ Siti Web \ Winhelponline \ blog \ wp-content" 
  3. Quindi, esegui il comando seguente e premi INVIO:
     d: \ tools \ fciv.exe -v -sha1 -xml D: \ hashdb.xml 

    Il comando sopra verifica i file di destinazione rispetto ai checksum hash acquisiti in precedenza nel file XML hashdb.xml .

    Nell'output vengono visualizzati l'elenco dei file modificati (basato sul checksum hash) e l'elenco dei file mancanti (nella destinazione):

    Ecco un esempio di output.

     Avvio della verifica dei checksum: data / ora Elenco dei file modificati: ----------------------- uploads \ 2019 \ 05 \ w10-advanced-search-settings.png L'hash è: 8dac0a4400d2b700f81bf70c189e49eb6a620a2f Dovrebbe essere: cc2a1523ef070dc2e498dbf5f8cf5edac1b6900d Impossibile caricare il file hash \ 2019 \ 05 \ windiff-header.png Impossibile trovare il file. Codice errore: 2 Impossibile eseguire l'hashing dei caricamenti di file \ 2019 \ 05 \ windows-store-error-0x800706d9.png Messaggio di errore: Impossibile trovare il file specificato. Codice di errore: 2 uploads \ 2019 \ 05 \ w10-Enhanced-search-settings.png L'hash è: 8dac0a4400d2b700f81bf70c189e49eb6a620a2f Dovrebbe essere: cc2a1523ef070dc2e498dbf5f8cf5edac1b6900d Impossibile trovare il file di errore il file specificato. Codice errore: 2 Impossibile eseguire l'hashing dei caricamenti di file \ 2019 \ 05 \ windows-store-error-0x800706d9.png Messaggio di errore: Impossibile trovare il file specificato. Codice errore: 2 End Verification: timestamp 

Il metodo sopra è molto utile per verificare l'integrità dei file corrispondenti nella cartella di destinazione. Ma non mostra l'elenco di file extra nella destinazione. Ecco dove l' opzione 2 di seguito ha un ulteriore vantaggio.

opzione 2

Rather than outputting the files list and checksums to an XML database, you can output the items in the source and destination to separate text files. Then the text files can be compared using WinDiff, WinMerge, DiffChecker.com or WinCompare utility.

Run these commands from a Command Prompt window.

 fciv -r "D:\Websites\Winhelponline\blog\wp-content\uploads" -bp "D:\Websites\Winhelponline\blog\wp-content" >d:\source.txt fciv -r "e:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads" -bp "e:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content" >d:\destination.txt 

Then, compare the two files source.txt and destination.txt using a file compare tool like WinDiff, WinMerge, DiffChecker.com, DiffMerge or WinCompare.

You'll see the list of missing files, extra files and modified files (based on the computed checksum) in the two folder locations.

I synchronized the two folders using RoboCopy and then compared the folders again using FCIV hash checksum. They're now identical!


Method 9: Compare Two Folders Using PowerShell

Using PowerShell you can recursively compare two folders easily.

Start PowerShell. Copy the following snippet and paste them all in the PowerShell window, and press ENTER

Enter the source folder and destination folders, replacing the source_folder_path and dest_folder_path placeholders respectively.

 $Folder1 = "source_folder_path" $Folder2 = "dest_folder_path" function Get-Directories ($path) { $PathLength = $path.length Get-ChildItem $path -Recurse | % { Add-Member -InputObject $_ -MemberType NoteProperty -Name RelativePath -Value $_.FullName.substring($PathLength+1) $_ } } Compare-Object (Get-Directories $Folder1) (Get-Directories $Folder2) -Property RelativePath | Sort RelativePath, Name -desc 

You'll see an output like this:

The side indicator <= means the file or folder exists only in the source. ie, missing in the destination.

The side indicator => means the file or folder exists only in the destination. ie, missing in the source.

Editor's note: The above code compares only the file names without matching any other details like size, date modified, etc. PowerShell has the capability to do a hash-comparison of items in two folders and output the results, which is described in the next method.

Sync folders

With some 10 additional lines of PowerShell code, you can even copy the different or missing files from source → destination, or vice versa. For more information, see Sync Files And Folders With PowerShell.


Method 10: Compare Two Folders Using PowerShell with File Hash Checksum

To compare files in two locations using file hash checksum, you can use PowerShell. PowerShell by default uses the SHA-256 algorithm, which you can change using the -Algorithm parameter. As said earlier, hash checksum is a kind of signature for a file which is unique.

In this example, we're going to compare the following folders:

 D:\Websites\Winhelponline\blog\wp-content\uploads\2019 E:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads\2019 

Use the following command-line to compute the hash for files in the source folder and output the results to source.txt file.

 Get-ChildItem 'D:\Websites\Winhelponline\blog\wp-content\uploads\2019' -Recurse | Get-FileHash | Select Path, Hash | export-csv d:\source.txt -Delimiter "`t" -NoTypeInformation 

Then, run the following command to remove the base paths from the file.

 (gc -path d:\source.txt -raw) -replace 'D:\\Websites\\Winhelponline\\blog\\wp-content\\', '' | Out-File d:\source.txt 

The list of file names (with relative path) along with the SHA-256 hashes are outputted to the source.txt file.

Similarly, run the commands for computing hashes for items in the destination, and then remove the base paths from destinations.txt :

 Get-ChildItem 'E:\RameshPC-Synced Backup\Websites\Winhelponline\blog\wp-content\uploads\2019' -Recurse | Get-FileHash | Select Path, Hash | export-csv d:\destination.txt -Delimiter "`t" -NoTypeInformation 
 (gc -path d:\destination.txt -raw) -replace 'E:\\RameshPC-Synced Backup\\Websites\\Winhelponline\\blog\\wp-content\\', '' | Out-File d:\destination.txt 

The above command computes the hash for each file in the destination folder recursively, and the output is written to d:\destination.txt

Compare using PowerShell

Next, compare the files using the following PowerShell command:

 Compare-Object -ReferenceObject $(Get-Content d:\source.txt) -DifferenceObject $(Get-Content d:\destination.txt) | fl 

It shows the different files and the location of each item denoted by the symbols <= or => for left folder and right folder respectively. The output also shows extra files in the source as well as the destination.

Compare using WinDiff

Alternately, you can run WinDiff and compare d:\source.txt and d:\destination.txt . You can use the following WinDiff command-line to compare the files:

 d:\Tools\windiff.exe d:\source.txt d:\destination.txt 

The WinDiff output shows differences highlighted in yellow/red. From the above screenshot, we can infer that the file 0xc1900101-error.png is different. Also, the destination folder or the right folder (denoted by the symbols !> in WinDiff) has an extra file named 1h.txt .

PowerShell supports many hash algorithms and so it has an advantage over the FCIV.exe tool. The Microsoft FCIV tool supports MD5 and SHA-1 algorithms only, which are outdated and can be ineffective due to collision issues, albeit very rarely. SHA-1 collision means that two files have identical SHA-1 hashes but different content. So, SHA-256 may be the preferred algorithm for file or folder comparison in a production environment.


Note that the command-line methods 11 & 12 below only help you compare the structure of two directories along with files. They don't compare file sizes or modified date to know which is the newer. They only do a plain comparison based on file names and you wouldn't know if one of the destination files becomes corrupt during a copy operation. In a production environment, you may need to use other tools or methods if you need to verify the integrity of your files in the source and destination folders, to make sure they are the exact same copies.

Method 11: List the folder structure using TREE command

To compare two directories along with sub-directories, the good old TREE command comes extremely handy. Suppose you want to compare the two folders (including file names) D:\SOURCE and D:\DEST, follow these steps:

  1. Open a Command Prompt window.
  2. Type these commands:
     TREE D:\SOURCE /A /F >D:\SOURCE.TXT 
     TREE D:\DEST /A /F >D:\DEST.TXT 

    This outputs each of the command results to separate text files in your D:\ drive's root directory. The text files will have your directory structure in a tree format, which makes it easy for comparison work.

    Quick Tip: To compare only the directories, remove the /F flag.
  3. Next, fire up your text comparison utility like WinDiff, WinMerge or DiffMerge. Alternately, you can compare the two text files online via diffchecker.com.
  4. Go to DiffChecker.com and paste the contents of d:\source.txt in one column, and D:\DEST.txt in another column. Click Find differences .

    Confronto delle directory

    Directory and files comparison

Method 12: List folder structure using the DIR Command

To compare the contents of two directories, another command-line you can use is the DIR command.

Use the following command-line syntax to generate the list of files in a directory recursively. You can then compare it using a compare tool or DiffMerge.

 DIR D:\SOURCE /S /AD /B >D:\SOURCE.TXT 
 DIR D:\DEST /S /AD /B >D:\DEST.TXT 
Quick Tip: To include files along with the directory listing, remove the “/AD” flag.

There is one problem though, when using the DIR command. It lists full directory and file paths in the output, as below:

  1. D:\Source\Apr\Week1
  2. D:\Source\Apr\Week2
  3. D:\DEST\Apr\Week1
  4. D:\DEST\Apr\Week2

In that case, you'll need to remove the comparison base paths D:\SOURCE\ and D:\DEST\ in the respective text files by editing them with Notepad. To bulk replace text, use the Replace option in Notepad and remove every occurrence of the base path.

Once done, save the files and compare the contents online via DiffChecker or using an offline text-comparison tool like WinDiff or WinMerge.

Directory comparison – List generated using DIR instead of TREE

I bet you'll find directory contents output generated using TREE to be much easier and far neater than DIR .


Hope the above methods helped you quickly compare the contents of two folders recursively, identify missing and modified files and reconcile differences.

Let's know your comments!

Articoli Correlati