Yedeklemeyi güvenle hariç tutabileceğim girişler


10

Ben rsnapshot dayalı bir yedekleme stratejisi planlıyorum .

Geri yüklemenin tekrar çalışan bir sisteme sahip olması için işe yaramayacak dosyalar ve dizinler hariç tam bir sistem yedeklemesi yapmak istiyorum. Zaten hariç tuttum:

# System:
exclude /dev/*
exclude /proc/*
exclude /sys/*
exclude /tmp/*
exclude /run/*
exclude /mnt/*
exclude /media/*
exclude /lost+found

# Application:
exclude /*.pyc
exclude /*.pyo

Geri yüklenen sistemden ödün vermeden hariç tutma listesine başka hangi girişleri ekleyebileceğimi merak ediyorum. "Genel" bir Linux sisteminden bahsederken, daha fazla glob uzantısı, geçici dizin, önbellek vb. Önerebilir misiniz? Güvenle hariç tutabilir miyim?

Yanıtlar:


11

Öncelikle, rsync'in include / exclude sözdizimini biraz okumalısınız. Yapmak istediğiniz şeyin **globları globlardan daha iyi yapmak olduğunu hissediyorum *. ( **herhangi bir sayıda girişe *genişlerken, yalnızca birden çok dizin girişiyle eşleşen tek bir girişe genişler . Ayrıntılar, Desen Kurallarını Ekle / Hariç Tutman rsync altındadır .)

Bununla birlikte, sistemi en az güçlükle yedeklemeden bilinen bir çalışma durumuna geri yükleyebilmek istiyorsanız, dosyaları veya dizinleri hariç tutmaya dikkat etmelisiniz. Kendimi rsnapshot kullanıyorum ve aslında tam tersi bir yaklaşım benimsedi: dikkatlice seçilmiş birkaç dizin dışında her şeyi dahil.

Yani benim rsnapshot.conf aslında (rsnapshot yapılandırma dosyası ayrıştırıcı mutlu etmek için sekmeleri ile):

interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./

ve çok az şey. Evet, kesinlikle ihtiyaç duyulandan biraz daha fazla kopyalayabileceğim anlamına geliyor, ancak ephermal olarak tasarlanmamış herhangi bir şeyin kopyalanmasını sağlıyor. Rsync'in hardlink-tekilleştirme davranışı kullanan rsnapshot nedeniyle, bunun tek gerçek maliyeti ilk çalıştırma sırasındadır; bundan sonra, makul boyutta (toplam veri kümesi boyutunuzla karşılaştırıldığında) yedek hedef konumunuz olduğunu varsayarsak, zaman veya disk alanında çok az ekstra zaman alır. Yedekleme hedef dosya sistemini bağladığım yer olduğu için / backup içeriğini hariç tutuyorum; bunu hariç tutmak, yedeklemenin kendisine kopyalanması durumuna yol açacaktır. Ancak, çıplak metale geri dönmem gerekirse basitlik için, montaj noktasını korumak istiyorum!

Benim durumumda da makul bir şekilde kullanamam one_fs 1; ZFS'yi şu anda ~ 40 dosya sistemiyle çalıştırıyorum. Tüm bunları açıkça listelemek bir bakım kabusu olacak ve ZFS dosya sistemleriyle çalışmayı olması gerekenden çok daha karmaşık hale getirecektir.

Yukarıda ve ötesinde hariç tutmak istediğiniz hemen hemen her şey, yine de dağılıma bağlı olacaktır, bu yüzden genel bir cevap vermek neredeyse imkansızdır. Bununla birlikte, / var altında bazı adaylar bulabileceğinizi söyledi.


1
exclude /somepath/*bu durumda gayet iyi; /somepath/beklendiği gibi içerdiği her şeyi hariç tutar . İhtiyacınız yok **çünkü içerideki her şey /somepath/zaten hariç tutulduğunda daha derin görünmeye gerek yok .
Martin von Wittich

Ya da sadece exclude /somepathbu dizinleri sadece içeriğini değil, tamamen kullanın ve görmezden gelin.
Frank Kusters

4
@spaceknarf Çıplak metale döndüğünüzde montajı koparır, çünkü montaj noktası mevcut değildir.
CVn

4

Yapmaya çalıştığınız şeylerin çoğu, muhtemelen one_fsayar kullanılarak gerçekleştirilebilir . Daha sonra, kendi yedekleri dahil etmek istediğiniz dosya sistemlerini ayarlayın (kalanını görmezden bu ayarı kullanın proc, sys, devvb.) Ben dahil ediyorum /lost+foundsen yedeklenen ettik sürece muhtemelen bir şey yedeğini istediğiniz bu durumda bozuk bir dosya sistemi, bu dizin daima boş olmalıdır, çünkü fsckiyileşti. Ayrıca, .pycve .pyoaslında kök dizinde ilk başta olmamalı, bu yüzden ben de bu satırları kaldırmak istiyorum. /tmpve /var/tmpgüvenilir bir şekilde yedekleme hariç tutulabilir veri içeren bir "genel" sistemine kalan tek yolları hakkındadır. Belki de şöyle bir şey deneyin:

one_fs 1

exclude /tmp/
exclude /var/tmp/

Gerçekten istememiştim /*.pycve /*.pycgeniş ancak sistem *.pycve *.pyobunu sabit. Eğer emin değilim one_fsiçin ayarlanmış 1olsa da, bana istediğim her şeyi hariç tutabilirsiniz.
Paolo

1
Bir sistem paketi bu dosyaları kullanıyorsa ne olur?
depquid

haklısınız, ancak neredeyse her dosya .py'nin er ya da geç otomatik olarak yeniden derleneceğinden eminim.
Paolo

3
Belki de, ancak sistemimde bu tür dosyalar satıcı paketleri tarafından yüklenir. Bu, sistem yedeklemeden geri yüklenirse, paket yöneticisinin orada olduğunu düşündüğü dosyaların eksik olacağı anlamına gelir. "Genel" bir Linux sistemi için bir çözüm istediniz ve bu tür dosyaların sorun çıkarmadan kaybedilebileceğini her zaman güvenli bulmuyorum.
13'te

Q'da söylemeyi unuttuğum bir şey, veri bağlarını önlemek için bağlama bağlarının da hariç tutulması gerektiğidir.
Paolo

1

Bir paket listesi, / etc, / home içeriği ve / var ve başka yerlerden herhangi bir kullanıcı / sistem verisine sahip olmanın daha iyi olduğunu düşünüyorum. Paketleri yeniden yüklemek ve çalışma yapılandırmasını kopyalamak genellikle daha hızlıdır.


Neden tüm sistem dosyalarını yazmanın yanı sıra yapılandırmayı ve meta verileri işlemeyi içeren paketleri yüklemek yalnızca dosyaları kopyalamaktan daha hızlı olur?
13'te

Gerçek bir yedekleme gerektiğinde, bir sistemle ilgili tüm bitleri düzgün bir şekilde saklamadığınızı ve belgelemediğinizi de öğrendiğiniz benim deneyimim oldu. Restorasyon yerine rekreasyona odaklanmak daha kolay, daha hızlı ve daha sık yapılmasını sağlar. Açıkçası YMMV.
Sean Perry
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.