Sto cercando qualcosa che confronterà directory e file come Beyond Compare fa per Windows.
È principalmente per l'uso del controllo del codice sorgente, ma devo utilizzarlo anche per la distribuzione.
Sto cercando qualcosa che confronterà directory e file come Beyond Compare fa per Windows.
È principalmente per l'uso del controllo del codice sorgente, ma devo utilizzarlo anche per la distribuzione.
Risposte:
La combinazione è uno strumento che può confrontare e unire file e directory. È un analogo della GUI per gli strumenti standard diff
e della patch
riga di comando. (Vedi man diff e man patch per maggiori dettagli su quelli)
Inoltre, molti sistemi di controllo del codice sorgente (come bzr
o git
) hanno la possibilità di creare differenze tra le versioni.
beyond compare
sotto. superior to meld imho
Diff è tuo amico.
diff -ur path1 path2
Ciò confronterà tutti i file comuni tra path1 e path2.
Se cambi -ur
a -urN
allora, questo mostrerà anche il contenuto dei file che sono presenti solo in uno dei percorsi.
colordiff
e usatocolordiff -ur path1 path2
'Beyond Compare' è disponibile anche per Linux.
Controlla il loro URL di download: http://www.scootersoftware.com/download.php
Usa il diff
comando:
diff -u file1 file2
diff -u
seleziona un formato con poche righe di contesto. Una pianura diff file1 file2
elenca solo le diverse linee. Esistono molte altre opzioni per controllare il formato di output, ignorare le differenze di soli spazi, ecc.
Se si desidera scrivere l'output in un file, reindirizzarlo:
diff -u file1 file2 >file1-file2.diff
L'interfaccia potrebbe non essere molto sexy, ma è estremamente potente!
E se eri abituato ad altri * comandanti (come Norton o simili), non ti perderai.
Ispirato da questo post di blog .
Elenco di file diversi:
diff -qr folder1 folder2
Elenco anche contenuto:
diff -Naur folder1 folder2
Se le due directory non si trovano sulla stessa macchina, rsync
potrebbe essere la soluzione più semplice. Di solito rsync
viene utilizzato per sincronizzare le directory, ma è possibile eseguirlo in modalità dettagliata e asciutta, quindi elencherà solo i file che dovrebbe cambiare.
rsync -rvnc --delete folder1 server:/path/to/folder2
Puoi omettere c
se desideri confrontare i file in base a timestamp e dimensioni dei file per accelerare tutto:
rsync -rvn --delete folder1 server:/path/to/folder2
Krusader è uno strumento gratuito (disponibile nel Software Center) che mostra i contenuti delle cartelle a confronto e che puoi sincronizzare con molte opzioni diverse. Puoi filtrare durante la sincronizzazione e il confronto.
Per confrontare il contenuto del file, è sufficiente contrassegnare due file selezionare "file"> "confronta contenuto" e vengono confrontati lettera per lettera. lo strumento di confronto predefinito utilizzato da krusader è lo strumento di KDE predefinito " Kompare ". Puoi impostare Krusader in modo che utilizzi qualsiasi altro strumento di confronto, come ad esempio uno dei precedenti.
Questa è la soluzione più completa che abbia mai trovato ed è molto conveniente. E supporta tutte le combinazioni di tasti funzione utilizzate dal comandante di mezzanotte (sintassi del comandante norton).
Ho saputo dell'hashdeep due settimane fa. E ha alcuni forti vantaggi:
meld
, funziona bene per cartelle molto grandi. Laddove meld
diventa estremamente lento e l'interfaccia utente non risponde (bloccata), l'hashdeep funziona a velocità costantersync
, hashdeep rileva i file spostati, ovvero file con lo stesso contenuto, in una directory diversa.L'output dettagliato è simile a:
...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG
hashdeep: Audit failed
Input files examined: 0
Known files expecting: 0
Files matched: 6233
Files partially matched: 0
Files moved: 3695
New files found: 19257
Known files not found: 4713
Un buon modo per fare questo confronto è usare " find " con " md5sum ", quindi un " diff ".
Esempio:
Usa trova per elencare tutti i file nella directory, quindi calcola l'hash md5 per ogni file e esegui il pipe in un file:
$find /dir1/ -type f -exec md5sum {} \; > dir1.txt
Esegui la stessa procedura in un'altra directory:
$find /dir2/ -type f -exec md5sum {} \; > dir2.txt
Quindi confrontare il risultato due file con "diff":
$diff dir1.txt dir2.txt
Questa strategia è molto utile quando le due directory da confrontare non sono nella stessa macchina ed è necessario assicurarsi che i file siano uguali in entrambe le directory.
Un altro buon modo per fare il lavoro è usare git
git diff --no-index dir1/ dir2/
I migliori saluti!
Prova anche FreeFileSync . Ha un'interfaccia decente, una velocità di confronto accettabile, un buon filtraggio del risultato del confronto, diversi modi di sincronizzazione. Viene fornito con uno strumento di monitoraggio delle cartelle (RealTimeSync) che può avviare FreeFileSync (in realtà qualsiasi comando o script) quando vengono modificate quella specifica cartella (o cartelle) o i file all'interno. Vale davvero la pena provare.
Maggiori informazioni su di esso qui o qui , dove si ha un PPA , troppo
Dalla loro pagina, le caratteristiche principali:
Confronta i file (per byte o per data) e sincronizzali.
Nessuna limitazione: è possibile sincronizzare un numero arbitrario di file.
Supporto Unicode.
Supporto di rete.
Supporto integrato per nomi di file molto lunghi (più di MAX_PATH = 260 caratteri).
Database di sincronizzazione per la propagazione di file eliminati e rilevamento dei conflitti
Supporto per più coppie di cartelle con configurazione distinta
Supporto completo per collegamenti simbolici Windows / Linux e punti di giunzione Windows.
Interfaccia utente snella e facilmente accessibile: altamente ottimizzata per la velocità e enormi set di dati.
Algoritmi codificati completamente in C ++.
Tutti gli indicatori di progresso ottimizzati per le massime prestazioni!
Crea processi batch per la sincronizzazione automatica con o senza GUI.
Concentrarsi sull'usabilità:
Solo funzionalità necessarie sull'interfaccia utente: nessun menu sovraccarico o icona giungla.
Seleziona tutte le cartelle trascinandole.
L'ultima configurazione utilizzata e le impostazioni dello schermo vengono salvate automaticamente.
Mantenere e caricare diverse configurazioni trascinandole, pulsante di caricamento o riga di comando.
Fare doppio clic per avviare l'applicazione esterna (ad es. Mostra file in Esplora risorse)
Copia e incolla tutti i dati della griglia come testo
Elimina i file superflui / temporanei direttamente sulla griglia principale.
Menu contestuale del tasto destro.
Informazioni complete sullo stato e segnalazione degli errori
Ordina gli elenchi di file per nome, dimensione o data.
Supporto per file di dimensioni superiori a 4 GB.
Opzione per spostare i file nel Cestino invece di eliminarli / sovrascriverli.
Ignora le directory "\ RECYCLER" e "\ System Volume Information" con il filtro predefinito. (Solo Windows)
Le versioni localizzate sono disponibili per molte lingue.
Elimina prima della copia: evita carenze di spazio su disco per lavori di sincronizzazione di grandi dimensioni.
Filtra le funzionalità per includere / escludere i file dalla sincronizzazione (senza richiedere un nuovo confronto!).
Includi / escludi temporaneamente determinati file dalla sincronizzazione.
Gestisci automaticamente le modifiche dell'ora legale sui volumi FAT / FAT32.
Disponibile versione portatile (selezionabile tramite programma di installazione).
Versione nativa a 64 bit.
Controlla automaticamente gli aggiornamenti da FreeFileSync.
Copia i file bloccati utilizzando il servizio Copia Shadow del volume di Windows. (Solo Windows)
Crea backup regolari con macro% time%,% date% all'interno dei nomi di directory
Copia i tempi di creazione / accesso / modifica di file e cartelle durante la sincronizzazione
Strategia di blocco avanzata per consentire più processi di sincronizzazione (ad es. Più writer, stessa condivisione di rete)
Aggiungo che può gestire i file eliminati, spostandoli nel Cestino o in una cartella specificata dall'utente. Per indicare uno svantaggio: la documentazione del programma si concentra un po 'su Windows, meno su Linux. Ma funziona bene.
Puoi usare diffuso:
sudo apt-get install diffuse
diffuse file1 file2
Puoi provare la fusione .
Sono i repository e forniscono una GUI per il confronto di file o cartelle.
IMHO FreeFileSync è molto buono e più utile di Meld. È veloce e stabile, può eseguire sincronizzazioni costomizable e può anche esportare il risultato del confronto in un file CSV.
Le funzionalità multipiattaforma, facili, senza complicazioni e per il salvataggio dei profili rendono Jfilesync la mia migliore scelta
File_1.txt
Line1
Line2
File_2.txt
Line1
Line 2
Puoi usare il comando cmp
:
cmp -b "File_1.txt" "File_2.txt"
l'uscita sarebbe
a b differ: byte 11, line 2 is 62 2 40
puoi usare il comando diff :
diff -r --brief dir1 dir2
man diff
-r, --recursive
recursively compare any subdirectories found
-q, --brief
report only when files differ