Küçük değişikliklerle büyük bir dosyayı nasıl yedekleyebilirim?


9

Bir dosya kümesi (her biri birkaç GB büyüklüğünde) ve her biri her gün biraz değişirse (rastgele yerlerde, yalnızca sonuna eklenen bilgiler değil), nasıl verimli bir şekilde kopyalanabilir? Demek istediğim, tüm dosyaların değil, yalnızca değişen parçaların güncellendiği anlamında. Bu, buraya bazı Kb veya bazı GB'leri kopyalamak arasındaki fark anlamına gelir.


İkili fark? Bunun bir şey olduğunu düşünüyorum ama sanmıyorum diffyapacak
kedi

@cat: difffarklılıkları bildirebilir, ancak burada sorun küçük farklılıkları kopyalamaktır.
Quora Feans

Eh, sadece diffs kopyalamak düşünüyordum - rsynciyidir
kedi

Yanıtlar:


25

Rsync programı tam olarak bunu yapıyor. Man sayfasından:

Yalnızca kaynak dosyalar ve hedefteki mevcut dosyalar arasındaki farkları göndererek ağ üzerinden gönderilen veri miktarını azaltan delta-transfer algoritması ile ünlüdür. Rsync, yedekleme ve yansıtma için ve günlük kullanım için geliştirilmiş bir kopyalama komutu olarak yaygın olarak kullanılmaktadır.


Aslında, rsync aslında bu cevabı yazarken, bu makinedeki her şeyi dosya sunucuma (zfs ile) yedekliyor.
hlovdal

Yedekleme amacıyla, rdiff-backup ( nongnu.org/rdiff-backup ) önermek istiyorum . Birkaç yıl boyunca dört farklı makineyi iyi sonuçlarla yedeklemek için kullanıyorum.
Thomas Padron-McCarthy

Wikipedia, yuvarlanan sağlama toplamlarını kullanarak dosya yığınlarını nasıl rsynckarşılaştırdığına dair iyi bir açıklamaya sahiptir .
Adam Katz

İçinde sadece birkaç dosya değiştirildi eski bir VM sabit disk görüntüsüne "geri" rsync denedim, ne yazık ki rsync tüm dosyayı tekrar kopyalamak gibi görünüyor (~ 3 dakika yazma ~ 300MB / s)? rsync -av --progress --partial --inplace arch-test1.qcow2.bak arch-test1.qcow2
feedc0de

8

Muhtemelen modern bir tekilleştirici yedekleme programı istiyorsunuz. BorgBackup'a göz atın .

Bu, büyük dosyanızın her sürümünün birden çok yedeklemesini yapar, ancak ortak içeriği farklı sürümler arasında paylaşır, böylece büyük dosyanızın belirli bir sürümü için kullanılan toplam alan, tek bir disk için toplam disk alanından biraz daha fazla olur sürümü, farklı sürümlerin sadece biraz farklı olduğunu varsayarsak.


5

Herhangi bir şekilde IO ile sınırlıysanız, ne yapması gerektiği gibi dosyalardaki farkları bulmak zorunda kalmadan artımlı yedeklemeleri doğrudan destekleyen BTRFS veya ZFS gibi bir dosya sistemi kullanın rsync.

Kullanımı rsyncyavaş ve çok yoğun IO olacak.

Çünkü dosyalara herhangi bir uygulama değişiklikleri yazıyorsa, herhangi bir şekilde IO-sınırlıysa, kullanmak rsync, dosyaların var olmasının nedeni olan önemli IO döngülerini uygulamadan uzaklaştıracaktır. Yedekleme işleminiz veya sisteminiz IO sınırlıysa, rsyncIO döngülerini kullanılabilir yedekleme bant genişliğinizden uzaklaştıracaktır.

Sadece Google "rsync yavaş". Örneğin: rsync, dosyaları nfs-share'den local dir'e kopyalarken cp ile karşılaştırıldığında çok yavaş (faktör 8 ila 10)


Bu, tüm meta verileri kontrol etmeden korumak ve her zaman yedek kopyanızın orijinal kopya kadar iyi olduğunu bilmek gibi bir avantaj sağlar. rsync genel kullanım için iyidir, ancak modern bir dosya sisteminiz varsa, avantajlarını görmezden gelmek aptalca olur.
user121391
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.