Dosyaları tekilleştirme yöntemleri


10

Sadece birkaç makinedeki dosyaları yedeklemek ve arşivlemek istiyorum. Ne yazık ki, dosyalar aynı dosyada olan ancak farklı makinelerde farklı şekilde saklanan bazı büyük dosyalara sahiptir. Örneğin, bir bilgisayardan diğerine geçici yedekleme olarak kopyalanan birkaç yüz fotoğraf olabilir. Artık ortak bir dosya deposu yapmak istediğime göre, aynı fotoğrafın birkaç kopyasını istemiyorum.

Tüm bu dosyaları tek bir dizine kopyalarsam, geçip gidip yinelenen dosyaları tanıyabilen ve bana bir liste verebilecek veya yinelenenlerden birini silebilecek bir araç var mı?


Yanıtlar:


3

Her dosya için bir md5sum oluşturun, yinelenen md5sums yinelenen dosyaları önerir (ancak garanti etmez).


1
yaptıkları kuvvetle ancak, "önermek" :) dosyaları aynı boyutta, doğru olma öneri olasılığı varsa ..ve son derece yüksektir
warren

2

Aynı dosyaları sabit bağlantılara dönüştürmek için dupemerge kullanabilirsiniz . Ancak büyük bir dosya setinde çok uzun zaman alacaktır . Dosyaların SHA (veya MD5) karmaları neredeyse kesinlikle daha hızlı çalışacaktır, ancak kopyaları bulmak için daha fazla çalışma yapmanız gerekecektir. Yanlışlıkla çarpışma olasılığı o kadar düşüktür ki, gerçekte onu görmezden gelebilirsiniz. (Aslında, birçok veri tekilleştirme ürünü bunu zaten yapıyor.)

Fotoğraf ve müzikle uğraşmak için en iyi seçeneğiniz, özellikle bu öğelerin kopyalarını bulmak için uyarlanmış araçlar elde etmektir. Özellikle etiketleme, kırpma veya kodlama farklılıkları devreye girdikten sonra ikili düzeyde özdeş olan dosyalarınız olmayabilir. Dosyalara "küçük" resimler bulabilecek araçlar ve dosyalarda küçük ayarlamalar yapılmış olsa bile aynı "kulağa" gelen müzikler isteyeceksiniz.


1
hardlinkçok hızlı (1.2M dosyaları, 320GB için 200 saniye sürdü)
Marcel Waldvogel

1

Yeteneğiniz varsa, tekilleştirici bir dosya sistemi kurabilir ve yedeklerinizi buna koyabilirsiniz. Bu sadece tüm dosyaları tekilleştirmekle kalmayacak, aynı zamanda benzer dosya parçalarını da silecektir. Örneğin, birden fazla yerde aynı JPEG'e sahipseniz, ancak her sürümde farklı EXIF ​​etiketleri varsa, tekilleştirici bir dosya sistemi görüntü verilerini yalnızca bir kez depolar.

Veri tekilleştirme sistemlerinde lessfs, ZFS ve SDFS bulunur.


1
SDFS'de veya lessfs'de veri tekilleştirme hakkında konuşamam, ancak ZFS'de Dedupe böyle çalışmaz. Blok düzeyinde kontrol eder, bu nedenle aynı dosyalar muhtemelen tekilleştirme için işaretlenir, ancak farklı bir üstbilgiye sahip dosyalar büyük olasılıkla olmaz. Ayrıca, ZFS kayıt boyutunuzdan daha küçük dosyalar (varsayılan 128 KB'dir) tek bir blokta birlikte paketlenebilir, bu nedenle tekilleştirmeden yararlanamayabilirler.
notpeter

Tekilleştirilmiş dosya sistemi (zfs veya btrfs) yalnızca yedekleme ana bilgisayarında yer tasarrufu sağlar. Aktarılan veri miktarını kaydetmez. Dosyalar için bazı karma hesaplamak ve yedek ana bilgisayara göndermek bazı fikirdir. "Bende var" derse, o dosya için yedekleme yapılır. Bu çok pahalı (para) yedekleme yazılımı uygulanır. Bunu açık kaynaklarda hiç duymadım. Ama belki şu anda uygulanmaktadır, kim bilir :)
Znik

rsync --link-destOkumak / aktarmaktan tasarruf etmek istiyorsanız @Znik arkadaşınızdır. Basit bir giriş burada: netfuture.ch/2013/08/…
Marcel Waldvogel

bir dosyaya atanmış düğümleri test ederek çalışır. ancak tekilleştirme gizli olduğunda, örneğin squashfs dosya sisteminde, rsync bunu kontrol edemez ve aynı verileri birçok kez aktaracaktır.
Znik

0

Bu tür bir şey yaparken, birkaç hafta boyunca boş zamanlarınızda dosyaları kendiniz gözden geçirmenin çok daha ilgi çekici / zaman etkili olduğunu öğrendim. İşler arasındaki farkı bilgisayarınızın yapabileceğinden daha iyi anlayabilirsiniz.

Kabul etmiyorsanız, o zaman EasyDuplicateFinder öneririm . Yukarıda da belirttiğim gibi, 5GB dosya için yaklaşık bir gün uzun bir zaman alacaktır.

Ve başka bir notta, Crashplan daha önce yaptığınızı yapıyor, ancak çok daha organize, versiyonlama problemi olmayan bir şekilde.


0

Yedeklediğiniz makinelerin onu destekleyeceğini varsayan bir başka olasılık, benzer bir şey kullanmaktır rsync.

Eğer rsyncA ila B, sonra C ila B, daha sonra D vb B'ye, tam çiftleri (örneğin, dosya ismine göre) ortadan kaldırıldığında (ve makineler yedeklemekte konum arasında senkronize).

Ancak hepsinin birbiriyle senkronize olmasını istemiyorsanız, bu en iyi yol değildir.


0

Görüntü dosyaları için findimagedupes kullanın . Ayrıca debian olarak paketlenmiştir .


findimagedupes fotoğraflar veya grafikler içindir, belki bir biçimden diğerine dönüştürülür. fotoğraflar (ben evde) sadece söz konusu örnek. Başka büyük dosyalar olabilir.
Znik

0

Sabit bağlantılar tekilleştirme işlemini yalnızca tüm dosya aynı ise gerçekleştirir. Üstbilgiler (EXIF, ID3,…) veya meta veriler (sahip) farklıysa, bunlar birbirine bağlanmaz.

Blok tekilleştirme desteği (ZFS, btrfs,…) ile bir dosya sistemi kullanma şansınız olduğunda bunu kullanın. Kapsam düzeyinde veri tekilleştirmeyi destekleyen ve sürekli olarak büyük miktarda bellek tüketmeyen (ZFS çevrimiçi veri tekilleştirmesi gibi) btrfs'nin çevrimdışı (aka toplu ) veri tekilleştirme desteğine çok düşkünüm .

Veri tekilleştirme, dosyaların diğer kopya bildirimi olmadan kullanıcı tarafından değiştirilebilmesi avantajına da sahiptir (bu sizin durumunuzda değil, başkalarında uygulanabilir).

Mükemmel bir tartışma için bkz. Https://btrfs.wiki.kernel.org/index.php/Deduplication .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.