Beyond Compare gibi Windows için dizinleri ve dosyaları karşılaştıracak bir şey arıyorum.
Esas olarak kaynak kontrolünün kullanımı içindir, ancak dağıtım için de kullanmam gerekiyor.
Beyond Compare gibi Windows için dizinleri ve dosyaları karşılaştıracak bir şey arıyorum.
Esas olarak kaynak kontrolünün kullanımı içindir, ancak dağıtım için de kullanmam gerekiyor.
Yanıtlar:
Meld, dosyaları ve dizinleri karşılaştırabilen ve birleştirebilen bir araçtır. Standart diff
ve patch
komut satırı araçlarına bir GUI analogudur . ( Bunlarla ilgili daha fazla ayrıntı için bkz. Man diff ve man patch )
Ayrıca, birçok kaynak kontrol sistemi ( bzr
veya gibi git
) sürümler arasında fark yaratma yeteneğine sahiptir.
beyond compare
bakın. meld
Diff senin arkadaşın.
diff -ur path1 path2
Bu, path1 ve path2 arasında ortak olan tüm dosyaları karşılaştırır.
O zaman değiştirirseniz -ur
, -urN
bu da yalnızca yollardan birinde bulunan dosyaların içeriğini gösterir.
colordiff
ve kullanıldıcolordiff -ur path1 path2
'Karşılaştırma Ötesi' de Linux için kullanılabilir.
İndirme URL'lerini kontrol edin: http://www.scootersoftware.com/download.php
diff
Komutu kullanın :
diff -u file1 file2
diff -u
Birkaç bağlam içeriğine sahip bir format seçer. Bir düz diff file1 file2
sadece farklı satırları listeler. Çıktı formatını kontrol etmek, boşluk-sadece farkları yoksaymak, vb. İçin daha birçok seçenek var.
Çıktıyı bir dosyaya yazmak istiyorsanız, yönlendirin:
diff -u file1 file2 >file1-file2.diff
Arayüz gerçek seksi olmayabilir, ama son derece güçlü!
Diğer * Komutanlara (Norton ya da benzerleri gibi) alışkınsanız, kaybolmazsınız.
Bu blog girişinden ilham alındı .
Farklı dosyaların listelenmesi:
diff -qr folder1 folder2
Ayrıca içerik listeleniyor:
diff -Naur folder1 folder2
İki dizin aynı makinede değilse, rsync
en kolay çözüm olabilir. Genellikle rsync
dizinleri senkronize etmek için kullanılır, ancak ayrıntılı ve kuru modda çalıştırabilirsiniz, böylece yalnızca değiştirmesi gereken dosyaları listeler.
rsync -rvnc --delete folder1 server:/path/to/folder2
Her c
şeyi hızlandırmak için zaman damgalarına ve dosya boyutlarına göre dosyaları karşılaştırmak istiyorsanız , ihmal edebilirsiniz :
rsync -rvn --delete folder1 server:/path/to/folder2
Krusader, klasör içeriğini karşılaştırmalı olarak gösteren ücretsiz bir araçtır (Yazılım Merkezinde bulunur) ve birçok farklı seçenekle senkronize edebilirsiniz. Senkronize ederken ve karşılaştırırken filtreleyebilirsiniz.
Dosya içeriğini karşılaştırmak için iki dosyayı işaretlemeniz yeterlidir, "dosya"> "içeriği karşılaştır" ı seçin ve bunlar harf bazında karşılaştırıldı. krusader tarafından kullanılan varsayılan karşılaştırma aracı, varsayılan KDE aracı " Kompare " dir. Krusader'ı başka herhangi bir karşılaştırma aracını kullanacak şekilde ayarlayabilirsiniz - örneğin yukarıdakilerden birine benzer.
Bu şimdiye kadar bulduğum en eksiksiz çözüm ve çok uygun. Ve gece yarısı komutanı (norton komutanı sözdizimi) tarafından kullanılan tüm fonksiyon tuşlarını destekler.
İki hafta önce hashdeep'i öğrendim . Ve bazı güçlü avantajları vardır:
meld
, çok büyük klasörler için iyi çalışıyor. Nerede meld
(bloke) son derece yavaş ve UI tepkisiz hale gelir hashdeep sadece sabit bir hızda çalışırrsync
, hashdeep taşınan dosyaları algılar - aynı içeriğe sahip dosyaları, yalnızca farklı bir dizinde.Ayrıntılı çıktı şöyledir:
...
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
Bu karşılaştırmayı yapmanın iyi bir yolu " md5sum " ile " find ", sonra bir " diff " kullanmaktır.
Örnek:
Dizindeki tüm dosyaları listelemek için find komutunu kullanın, ardından her dosya için md5 değerini hesaplayın ve bir dosyaya aktarın:
$find /dir1/ -type f -exec md5sum {} \; > dir1.txt
Aynı işlemi başka bir dizine de yapın:
$find /dir2/ -type f -exec md5sum {} \; > dir2.txt
Sonra sonuç iki dosyaları "diff" ile karşılaştırın:
$diff dir1.txt dir2.txt
Bu strateji, karşılaştırılacak iki dizin aynı makinede olmadığında ve dosyaların her iki dizinde de eşit olduğundan emin olmanız gerektiğinde çok faydalıdır.
İşi yapmanın bir başka iyi yolu git kullanmak
git diff --no-index dir1/ dir2/
Saygılarımla!
FreeFileSync'i de deneyin . İyi bir arayüze, kabul edilebilir karşılaştırma hızına, karşılaştırma sonucunun iyi filtrelenmesine, farklı senkronizasyon yöntemlerine sahiptir. Belirli bir klasör (veya klasörler) veya içindeki dosyalar değiştirildiğinde FreeFileSync'i (aslında herhangi bir komut veya komut dosyası) başlatabilecek bir klasör izleme aracı (RealTimeSync) ile birlikte gelir. Gerçekten denemeye değer.
Bu konuda diğer bilgiler burada ya burada bir var, PPA , çok
Sayfalarından, temel özellikleri:
Dosyaları karşılaştırın (bytewise veya tarihe göre) ve senkronize edin.
Sınırlama yok: İsteğe bağlı sayıda dosya senkronize edilebilir.
Unicode desteği.
Ağ desteği.
Çok uzun dosya adları için dahili destek (MAX_PATH = 260 karakterden fazla).
Silinen dosyaların yayılması ve çakışma tespiti için senkronizasyon veritabanı
Farklı konfigürasyonda birden fazla klasör çifti için destek
Windows / Linux Sembolik Bağlantıları ve Windows Bağlantı Noktaları için tam destek.
Yalın ve kolay erişilebilir UI: Hız ve devasa veri setleri için son derece optimize edilmiş.
Algoritmalar tamamen C ++ kodluydu.
Tüm ilerleme göstergeleri maksimum performans için optimize edildi!
GUI ile veya GUI'siz otomatik senkronizasyon için Toplu İşler oluşturun.
Kullanılabilirliğe odaklanın:
UI'da yalnızca gerekli işlevler: Aşırı yüklenmiş menü veya simge ormanı yok.
Sürükle ve bırak ile tüm klasörleri seçin.
En son kullanılan yapılandırma ve ekran ayarları otomatik olarak kaydedilir.
Sürükle ve bırak, yükle düğmesi veya komut satırıyla farklı yapılandırmaları koruyun ve yükleyin.
Harici uygulamayı başlatmak için çift tıklayın (örn. Windows Gezgini'nde dosyayı göster)
Tüm ızgara verilerini metin olarak kopyala ve yapıştır
Gereksiz / geçici dosyaları doğrudan ana şebekeden silin.
İçerik menüsünü sağ tıklayın.
Kapsamlı durum bilgisi ve hata raporlama
Dosya listelerini ada, boyuta veya tarihe göre sıralayın.
4 GB'den büyük dosya boyutları için destek.
Dosyaları silmek / üzerine yazmak yerine Geri Dönüşüm Kutusu'na taşıma seçeneği.
Varsayılan Filtreli "\ RECYCLER" ve "\ System Volume Information" dizinlerini yoksay. (Yalnızca Windows)
Yerelleştirilmiş sürümler birçok dilde kullanılabilir.
Kopyalamadan önce sil: Büyük senkronizasyon işleri için disk alanı yetersizliğinden kaçının.
Dosyaları senkronizasyona dahil etmek / dışlamak için işlevselliği filtrele
Belirli dosyaları senkronizasyondan geçici olarak dahil etme / hariç tutma.
FAT / FAT32 birimlerinde gün ışığından yararlanma saati değişikliklerini otomatik olarak işleyin.
Portatif versiyon mevcut (montör ile seçilebilir).
Yerel 64 Bit sürümü.
FreeFileSync içinden güncellemeleri otomatik olarak kontrol et.
Kilitli dosyaları Windows Birim Gölge Kopyası Hizmeti'ni kullanarak kopyalayın. (Yalnızca Windows)
Dizin adlarında% time%,% date% makrolarıyla düzenli yedekleme oluşturun
Senkronize ederken kopyalanan dosya ve klasör oluşturma / erişim / değiştirme zamanları
Birden fazla senkronizasyon işlemine izin vermek için gelişmiş kilitleme stratejisi (örneğin, birden çok yazar, aynı ağ paylaşımı)
Silinen dosyaları yöneterek, Çöp Kutusuna veya kullanıcı tarafından belirtilen bir klasöre taşıyabilir. Bir dezavantajı işaret etmek için: program belgeleri Windows'ta biraz daha az Linux üzerinde odaklanmaktadır. Ama işini güzel yapıyor.
Diffuse kullanabilirsiniz:
sudo apt-get install diffuse
diffuse file1 file2
Kaynaklamayı deneyebilirsin .
Depolar ve dosya veya klasör karşılaştırması için bir GUI sağlar.
IMHO FreeFileSync, Meld'den çok iyi ve daha kullanışlıdır. Hızlı ve kararlı, costomize edilebilir senkronizasyonlar yapabilir ve karşılaştırmanın sonucunu bir csv dosyasına aktarabilir.
Platformlar arası, kolay, sorunsuz ve profil tasarrufu sağlayan özellikler Jfilesync'i en iyi tercihim yapıyor
File_1.txt
Line1
Line2
File_2.txt
Line1
Line 2
Komutu kullanabilirsiniz cmp
:
cmp -b "File_1.txt" "File_2.txt"
çıktı
a b differ: byte 11, line 2 is 62 2 40
diff komutunu kullanabilirsiniz :
diff -r --brief dir1 dir2
man diff
-r, --recursive
recursively compare any subdirectories found
-q, --brief
report only when files differ