Rsync çalışırken bir HDD kullanmak güvenli midir?


27

Büyük sabit disklerimi yedeklemeyi planlıyorum rsyncve birkaç gün alacağını tahmin ediyorum . Çalışırken orijinal HDD'yi (dosya ekleyerek) kullanmak güvenli rsyncmidir? Veya bitene kadar HDD’leri el değmeden bırakmak daha mı iyi rsync?


1
"Kullanmak" ın bir tarayıcıyı hiçbir şey yapmadan açmasını sağlamak kadar basit olabilir. Tarayıcılar, veri dizinlerine rastgele birçok şey yazma eğilimindedir. En kötü durumda, elde ettiğiniz şey tutarsız bir yedeklemedir, yani geri yüklerken sekmelerinizi geri yükleyemeyebilirsiniz, yer imleriniz kaybolabilir (çünkü veritabanı bozuktur) veya bu büyüklükte bir şey olabilir.
Jonas Schäfer

Yedeklenecek bu kadar veri varsa, yedeği daha küçük parçalara (alt-ağaçlara) bölmeyi düşünebilirsiniz. Ardından, yalnızca şu anda çalışmakta olan parçanın mümkün olduğunca statik tutulması gerekir - betiğinizin ilerlemesini izleyen hangi bölümü görebilirsiniz (bir log ile, vb.). Büyük bir yedek olmadığından, parçaların bazıları diğerleriyle senkronize edilemeyebilir, ancak canlı bir sistemde büyük bir yedek çalıştırıyorsanız, bu yine de olacak.
Joe,

Yanıtlar:


34

Diğerlerinin de belirttiği gibi, rsync çalışırken, kaynak diskten okumak veya hedef diskin dışındaki hedef diski kullanmak güvenlidir. Hedef dizin içinde, özellikle hedef dizin yalnızca rsync çalıştırması tarafından dolduruluyorsa okumak güvenlidir .

Olmayan ne genel olarak güvenli olan kaynak dizin içindeki yazma rsync çalışırken. "Yazıyor", kaynak dizinin içeriğini veya alt dizinlerini değiştiren herhangi bir şeydir, bu nedenle dosya güncellemelerini, silmeleri, oluşturma vb.

Bunu yapmak, aslında olmaz kırmak şey, ama değişim veya aslında hedef konuma kopyalamak için rsync tarafından yakalandı olabilir veya olmayabilir. Bu, değişimin türüne, rsync'nin belirli bir dizini henüz taramamış olup olmamasına ve rsync'nin söz konusu dosyayı veya dizini kopyalayıp kopyalamadığına bağlıdır.

Bununla birlikte, bunun kolay bir yolu var: Tamamlandığında, aynı parametrelerle rsync'i tekrar çalıştırın. (Bazı funky delete parametresine sahip değilseniz; yaparsanız, biraz daha dikkatli olun.) Bunu yapmak, kaynağın yeniden taranmasına ve orijinal çalıştırma sırasında toplanmayan farkların aktarılmasına neden olur.

İkinci çalıştırma yalnızca önceki rsync çalıştırması sırasında meydana gelen farkları transfer etmeli ve bu şekilde daha hızlı tamamlanacaktır. Bu nedenle, bilgisayarı ilk çalıştırma sırasında normal şekilde kullanmakta özgürsünüz, ancak ikinci çalıştırma sırasında kaynakta herhangi bir değişiklik yapmaktan kaçınmalısınız. Yapabiliyorsanız, ikinci rsync çalışmasına başlamadan önce kaynak dosya sistemini salt okunur olarak yeniden kurmayı düşünün . (Yapılması mount -o ro,remount /media/sourcegereken bir şey var.)


7
Biri ikinci bir koşudan sonra üçüncü bir koşuyu bile yapabilir : daha az zaman alabilir ... ;-)
gerlos

5
@gerlos Bir model ortaya çıkıyor gibi görünüyor. Neredeyse bir kişi, her kullanım oturumunun sonunda rsync komutunu çalıştırmaya devam edebilecek gibi duruyor ve birkaç gün içinde kısa sürede yapılacaktı.
Monty Harder,

5
@gerlos Rsync'i ikinci kez çalıştırmadan önce salt okunur bir şekilde yeniden bağlarsanız, bu gerekli olmayacak ve kaynak dosya sistemine yazamadığınız süreyi en aza indirirken tutarlı olması garanti edilecektir.
Bir CVn

1
@gerlos Bir yana, bu nedenle @reboot root find / -print &>/dev/nullsistem crontab'ımdaki gibi önbelleği doldurmak için bir giriş yaptım. (Asıl giriş, kendi sistemimdeki birkaç özel durumu hesaba katmak için daha karmaşık.) Dizin ağacı taramasını biraz IME geliştirmek için başlangıçta erken bir saatte biraz RAM ve biraz duvar saati kullanıyor.
17'de CVn

1
@ MichaelKjörling: hiyerarşiyi önbelleğe almak için fikir arası. Ama belki updatedb(bunun için yer bulma veritabanını inşa etmeli ) ya da slocate -u(eğer varsa, aynı yerde) çalışmalısınız. Bu şekilde hala hiyerarşiyi önbelleğe alıyorsunuz ama aynı zamanda birçok dosyayı hızlıca bulmak için bu komutları kullanmanıza izin veren locate veya slocate veritabanlarını da oluşturuyorsunuz?
Olivier Dulac

22

Bu, kullandığınız yedekleme sistemine bağlıdır, ancak genel olarak, siz yedeklerken bir cihazın içeriğini değiştirmek kötü bir fikirdir . Ancak içeriğini okuyabilirsiniz ; süreci yavaşlatacak olsa bile, bu güvenli bir işlemdir.

Senin durumunda, rsyncbir dosya listesi oluşturacak ve daha sonra yedeklemeyi başlatacak. Bu nedenle yedekleme sonra kaynak HDD eklemek herhangi bir dosya olacak başlamıştır değil kopyalanabilir.

Yaptığım bir yedekleme sırasında hiç bir cihaz kullanmamak. Bu hızlı ve tutarlı bir yedekleme elde etmenin daha güvenli bir yoludur.


14
Genellikle çalışmasına izin verdim ve rsyncbirkaç saniye içinde bitecek olan ikinci bir çalışmayı yapıyorum çünkü yalnızca çalışma sırasında değiştirdiğim dosyalar kopyalanacak. Her şey önbellekte olacak, bu yüzden bu dönemde değişikliklerden kaçınmak çok daha kolay.
Martin U

15

Çalışırken kaynak alanlardaki verileri okumak güvenlidir rsync, ancak herhangi bir şeyi güncellerseniz, rsyncoluşturan / güncelleyen kopyaların tutarsızlık göstermesi olasıdır:

  1. Rsync'in daha önce taradığı bir dosyayı güncellerseniz, bir sonraki çalıştırmaya kadar güncellemeyi görmez. Bir dosyayı güncellerseniz henüz taramayacak olan değişiklik hedefte dikkate alınacaktır. Hem taranan hem de taranmamış dosyaları güncellerseniz, hedefte eski ve yeni sürümlerin bir karışımı olur.

  2. Daha önce taranan bir dizine dosya eklerseniz, bu sefer hedef kopyadan atlanacaktır. Zaten taranmış bir dizinden bir dosyayı kaldırırsanız, bu sefer hedef kopyada bırakılacaktır. Nasıl başlattığınıza bağlı olarak rsynctüm ağaç başlangıçta taranabilir veya senkronizasyon işlemi gerçekleştikçe artımlı olarak taranabilir.

  3. Bazı durumlarda rsynctutarsızlığı görecek ve sizi uyaracaktır. Bir dosyayı veya alt dizini önceden taranan ancak içeriği taranmamış bir dizinden kaldırırsanız, eksik olan nesne hakkında bir hata mesajı alırsınız. Benzer durumlarda bazen (eğer boyut ve / veya zaman damgası değiştiyse), taramayı değiştiren dosyalar hakkında da uyarır.

Bazı yedeklemeler için bu tutarsızlık çok büyük bir sorun olmayabilir, ancak çoğu için aktif olarak değişen bir kaynağı senkronize etmemeniz önerilir.

Depolama sisteminizi porsiyonlamak için LVM kullanıyorsanız, bir an önce yedekleme yapmak için geçici bir anlık görüntü kullanabilirsiniz. Bu, anlık görüntünün gerekli olduğu sürede gerçekleşecek tüm değişiklikleri tutacak kadar büyük bir anlık görüntü birimi oluşturmak için birim grubunda yeterli alana sahip olmanızı gerektirir. LVM belgelerine bakın (ya da birçok çevrimiçi örnekten birini: daha fazla ayrıntı için "LVM anlık görüntü yedeğini" veya benzerini arayın).

LVM olmasa bile, bazı dosya sistemleri anlık görüntüleri kendileri destekler - bu yüzden bu seçeneğe de bakmak isteyebilirsiniz.

Uzun süre kapalı kalmadan büyük aktif birimleri yedeklemek istiyorsanız ve anlık görüntüleri kullanamıyorsanız, "canlı" taramayı tamamlamak için çalıştırmak, ardından birime erişimi durdurmak ve daha az zaman alabilen başka bir rsync işlemi çalıştırmak yeterli olabilir (eğer çok az değişti, sadece dizin ağacını tarayacak, sonra birkaç güncellenmiş dosyayı tarayacak). Bu şekilde değişikliklerden kaçınmanız gereken süre çok daha kısa olabilir.


Cevabınızı en çok seviyorum çünkü dosyalar değiştirilirse ne olacağına dair ayrıntılara girersiniz. Yalnızca bir alternatif sunmakla kalmaz, aynı zamanda neden olabileceği tutarsızlıkları da giderirsiniz (güncelleme eksik, eksik dosya hakkında uyarı vb.). Benim durumumda, uzun bir yedekleme yapmak için rsync kullanmak ve onu günler sonra yenilemek önemli değil ve bu OP'nin durumu gibi görünüyor. İlk seferinde kurumsal düzeyde bir yedekleme gerektiriyor gibi görünmüyor, ancak bilgisayarı yalnızca bu sürede kullanmak istiyor. Ben sadece güncelleştirilmiş dosyaları yakalamak için ikinci kez rsync çalıştırın.
ibennetch

11
  • Kaynak HDD rsync iken her şeyi okuyabilir.

  • Kaynak HDD, rsync içeriğiyle ilgili olmayan herhangi bir içerik yazabilir.

  • Hedef HDD, rsync iken her şeyi okuyabilir.

  • Hedef HDD, senkronize edilen içerik için yeterli alana sahip olma koşulu ile rsync yaparken her şeyi yazabilir.

Tabii ki, hiçbir durumda, performans azalması olacaktır.


0

Mevcut tüm cevaplar tutarlılık ve mükemmel donanım varsayımı bakımından veri güvenliğinden bahsediyor.

Dikkate alınacak bir diğer şey, donanım güvenliğinin kendisidir. Başarısızlığın eşiğinde olabilecek yedeklenmemiş sabit sürücüleriniz varsa (henüz bilmiyor olabilirsiniz) ve ilk kapsamlı bir yedekleme yapıyorsanız kullanmayın. Veriler kritikse, bağlantı bile vermeyin. ddDiski blok aygıtı olarak klonlamak gibi bir araç kullanabilirsiniz . İstediğiniz disk kafasının aranmasını istemiyor ve muhtemelen yedekleme yapmaya çalışırken yazıyor. Artı dd, sadece bitleri sırayla kopyaladığından ilk yedekleme için daha hızlı olmalıdır (Sürücü çoğunlukla dolu değilse, ilk durumda da rsync'in kazanacağını varsayalım).

Sonraki artımlı yedeklemeler için rsync harika bir seçimdir ve diğer cevapları% 100 kabul ediyorum.


1
Medya marjinal veya potansiyel olarak marjinal ddise en iyi seçenek değildir. Yerine ddrescuekullanın; kısmi başarısızlıkları çok daha iyi ele alıyor. Ancak bu, asıl soruda dikkate alınmadı.
bir CVN

@ MichaelKjörling Bu iyi bir nokta.
Zak
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.