Çalışan bir Linode sunucusu nasıl yedeklenir?


21

Kapatmadan, dünyanın diğer tarafında (Linode tarafından barındırılan) uzaktan çalışan Debian sunucumuzdaki her şeyin yedeğini almak istiyoruz.

Bu sistem birkaç basit nginx kurulumuyla kabuk, e-posta, XMPP / prosody ve web kullanıyor.
Bu şeylerle ilgili dosyaları sadece güvende olmak istiyoruz. Örneğin, kullanıcılar kendi giriş dizinlerinde sakladıkları dosyalar.

Her bir / etc dosyasındaki mevcut kurulumu tam olarak kopyalamamız gerekmez; bunun yerine, ilk başta yedeklemeyi bile yapmamızın nedeni, hepsini yeni bir düzene taşıyabiliriz (hala Debian'ın Linode'deki yeni sürümü).

Linode'nin bir yedekleme hizmeti sunduğunu görüyorum. Ancak uzun vadede, onların altına girmeleri ya da tuhaf bir şey olması durumunda kendi yedeklerimize de ihtiyacımız var.

Bu sorunun var olmasının nedeni, geçmişte yedekleme yapmaya çalıştığımda şu iki hatayı da yaptım.

  • "Tamam, sadece kopyalayacağım /ve altındaki herşeyi bulacağım" dedim ve sonra da kopyaladığım sürücünün / media / backup altına yerleştirildiği için tuhaf bir sonsuz döngüde sıkışıp kaldım. rsync veya benzerleri üzerinden yedekleme yapacağımızdan dolayı bu özel sorun burada geçerli değildir] veya sürekli değişen günlüklere ayak uydurmaya çalışmak gibi / proc veya / var veya bazı "canlı" şeyleri kopyalamaya çalışırken sıkışıp kalmıştır, veya
  • Gittim "Tamam, sadece ihtiyacımız olanın en azını alacağım ... hmm, herkesin ev dizinleri ve web sunucusu dizinlerimizin (tümü altındaki /var) ve /etc/ var / altındaki tüm eski postaların bir kopyasını alalım vmail "ve sonra her zaman dosya izinlerini veya zaman damgalarını (bu sefer bir FAT sürücüye unix dosyalarını yedeklemediğimden emin olamayacağım) ya da bir şey unuttum veya bir şey unuttum (" oh, ateş, / usr / 'da bazı özel komut dosyaları vardı. hiçbir yerde saklamadığım yerel / çöp kutusu, bunları almayı unuttum, sanırım artık gittiler ").

Bu nedenle, tüm sürücüyü doğrudan yukarı doğru obv kopyalamak tuzaklara neden olur ve dizinleri seçerek kopyalamak tuzaklara neden olur. Nasıl doğru yapılacağını bilmek istiyorum.

Sunucu Hatası sorusu Tam bir yedekleme sistemi için gerekenler? felsefe ve iyi uygulamaları kapsar, ancak aşağıdaki daha spesifik detayları arıyorum:

  • Hangi dizinleri kopyalamam gerekiyor ve hangilerini dışlamam gerekiyor (şu anda çalışmakta olan ve bir wiki, XMPP sohbeti, e-posta yayınlayan bir sistem olduğu için - kopyalama işi devam ederken yeni mesajlar geliyor)
  • Zaman damgaları, sahip ve grup gibi hangi dosya özelliklerini sunmam gerekiyor ve bunu nasıl yaparım? ← Sanırım sorunun yarısını kendim gibi bir şeyle cevaplayabilirim… um… rsync -HXazBence bizim için iyi bir seçenek mi? -zObv, "neyi korurum? " Sorusuyla gerçekten ilgili değil.

ddKullandığım gibi gördüğüm yedekleme tavsiyelerinin çoğunun, sürücünün sökülüp kullanılmadığını varsaydığı görülüyor. Ama / proc ve / var altındaki bazı alt dizinleri (ancak, kesinlikle saklamamız gerekeceğini biliyorum / var altındaki öğelerin bazıları ) ve / mount gibi "yaşayan" dizinleri dışlamamalı mıyım ? Bu durumda düşünmem gereken başka ne var? O zaman sanırım rsync ile bir miktar --excludebayrak kullanarak onu doyabiliyorum .

Yoksa özellikle FOSS dostu olanlardan daha iyi fikirler var mı?


Bu sorunun son derece basit gözüktüğünü biliyorum ama bu kadar uzun süredir bu tür sistemleri çalıştırdım, bunu tekrar tekrar karıştırdım ve asla doğru şekilde nasıl yapacağımı bilemedim
Sandra


Buna değer, cp -r -adosyalar kopyalanırken (hedef dosya sisteminin desteklediğine bağlı olarak) mümkün olduğunca çok sayıda dosya niteliğini koruyacaktır. -aBayrak talimatını cpözelliklerini korumak için. Bir ağ üzerinden veya gerekli özellikleri desteklemeyen bir dosya sistemi aracılığıyla kopyalamak tar -ciçin, kapsamadığı bazı son durumlar olduğuna ve özellikle de tarvarsayılan olarak eşleşen kullanıcı adlarına bağlı olduğuna inandığım halde, her zaman benim için çalıştı . her iki sistemde. Bununla birlikte, tarherhangi bir belirgin problem olmadan tüm (bağlantısız) bir Linux sistemini kopyaladım dedi .
Micheal Johnson

Ayrıca, sistemi canlı kopyalamanın gerekli olmasının belirli bir nedeni var mı?
Micheal Johnson

Linode'nın anlık görüntü servisini kullan?
ivanivan

Yanıtlar:


15

Yani tüm bu kötü hatalar olmadan sürücünüzü yedeklemek ve tüm / proc ve diğer geçici klasörleri filtrelemek mi istiyorsunuz?

Bir seçenek, kök klasörü dosya sistemi içindeki başka bir klasöre bağlamaktır, bunun gibi:

$ cd /mnt
$ mkdir drive
$ mount --bind / drive

Bu, sürücünüzde bulunan ve geçici sayılmayan tüm dosyaları (/ proc veya / sys klasörleri gibi) verir.

Artık kök klasörünüzü temiz bir şekilde görebildiğinize göre, standart cpveya ile sadece yedekleme sürücünüze kopyalayabilirsiniz rsync. Çizgileri boyunca bir şey:

cp -R /mnt/drive /mnt/backupdrive

Bu, bahsettiğiniz her iki sorunu da çözer:

  • Yedekleme diski sürücünün içine takılı olmadığından özyineleme yapmazsınız (bakış açısı)
  • önemli dosyaları özlemiyorsunuz çünkü hepsini alıyorsunuz

Ayrıca bakınız: erkek montajı (8)


6
Dikkat edin, bu çözümle veritabanları gibi yazılmakta olan dosyaları kopyalayabilirsiniz. Dosyaları kopyalamadan önce veritabanını ayrı bir dosyaya aktarmak için bir komut dosyası çalıştırmanızı öneririz. Örneğin, MySQL için mysqldump kullanabilirsiniz.
Marco Martinelli

10

Linux'ta her şey bir dosyadır. Rsync aracılığıyla bu mümkün, ancak farkında olması gereken, en iyisi dolaşması zor olan şeyler var.

Özellikle veritabanları için ilk önce çoğaltmayı düşünmelisiniz. Ayrıca bu, birincil sunucunuzun önüne proxy / yük dengeleyici kurmak için iyi bir fikirdir, böylece geçiş sırasında birincil ve ayna sunucularınızla kolayca ileri ve geri geçiş yapabilirsiniz.

Donanım düzeyinde, en iyi durum, aynı sayıda ethernet portu, aynı hdd yerleşimi vb. İle diğer tarafta ayna benzeri bir sunucuya sahip olmak olacaktır. Farklı olan her şey, sistem yapılandırma değişikliklerine ihtiyaç duyulduğunu gösterir.

Örneğin, iki adet et bağlantı noktanız varsa, ağ yapılandırması, güvenlik duvarı vb .'nin her iki sunucudaki arabirim adıyla eşleştiğinden emin olmak istersiniz ve farklı olması durumunda, rsync işleminden sonra yapılandırmayı ya da cihaz adını değiştirmeniz gerekebilir. (hedef) sunucusu.

Bölüm düzeni ile aynı. Birincil sunucunuzla aynı bölümleri oluşturmalısınız, ancak bunları sıfırdan yaratırsanız farklı UUID'lerle karşılaşırsınız, bu nedenle fstab, grub, mdadm (yumuşak baskın varsa) vb. .

Ancak, daha önce durmadığı takdirde (rsync yapmadan önce) tutarsız olabilecek veritabanları gibi yanlış gidebilecek birçok şey de vardır.

En iyi strateji, öncelikle birincil sunucunun yapılandırmasını eşleştirmek için donanım ve dosya sistemini (bölümler) hazırlamak olacaktır. Ardından boş parititonları aracı sistem aracılığıyla monte edin (ssh-server'ın geçici olarak kurulu olduğu canlı CD gibi). Boş / proc, / dev, / sys oluşturun ve sonra gerisini rsync yapın, şöyle yapın:

rsync -avz -H --delete /etc /bin (...and so on) destserver:/mnt/yourrootfs/

Sonra cihaza grub'u kurmanız ve önyüklenebilir hale getirmek için yapılandırma üzerinde çalışmanız, ağ yapılandırmasını, fstab ve daha önce bahsedilen diğer şeyleri değiştirmeniz gerekir.

Ayrıca yeni sistemi (birincil sunucunuzda kullandığınız sürümle aynı sürümde) yüklemeyi deneyebilir, daha sonra kapatabilir, başka bir geçici sisteme (canlı cd gibi) bağlayabilir ve / proc, / sys, / dev ve / rsync ile çalıştırma.

Ama bu sadece genel bir fikir. Bu sunucuda gerçekte neler olduğuna, yapılandırmanızın, ağınızın ve donanım kurulumunuzun ne olduğuna bağlı olarak işler karmaşık olabilir. Ve günün sonunda farkedilir aksama süreleri olmadan bunu yapmak gerçekten zor veya imkansız olabilir.


Veritabanları: Uygun dosya sistemi soyutlamaları varsa (örneğin bir LVM), sürücünün tam DB çoğaltmasına gitmeden tutarlı bir anlık görüntü alabilirsiniz. Ancak, bu veritabanınızın kill -9güvenli olmasını gerektirir, aksi takdirde kurtarılamayabilir. İyi bir veri tabanı bu durumu ele almalıdır , ancak şaşırtıcı sayıda ürün (veya daha da kötüsü, hemen hemen her zaman iyileşmezler, ancak gerçekten çalışmaları gerektiğinde mavi bir ayda bir kez başarısız olurlar). Yani pratikte, çoğaltma muhtemelen daha güvenilirdir.
Kevin

5

Aslında istediğin şey geri yüklemek. Ne yaparsanız yapın, testi düzenli olarak geri yüklemelisiniz.


Linode'nun bir yedekleme servisi var. Anlık görüntüler sınırlı önceden tanımlanmış bir programda veya bir API ile alınabilir.

Anlık görüntü tabanlı yedeklemelerin bir avantajı, kopya yapılırken veri değişmemesi nedeniyle zaman içinde keskin bir nokta sunmalarıdır. Anlık görüntüler, bu durumda farklı bir ana bilgisayara, yeni bir Linode'a da kolayca geri getirilebilir.


Örneğin, bu yedeklemelerin hala çalışmasını sağlamaya dair hiçbir şey göremiyorum. Linode iflas etti.
Mark

Sorumun düzenlemelerinden birini yazarken Linode'nin yedekleme servisini öğrendim ve meslektaşımla konuştum ve gittik. Acil krizimizi çözdü, ancak verileri kendi evlerimizde de saklamanın bir yolunu bulmaya çalışacağız. Yani + bu hizmete sahip olduklarını ortaya koyduğum için, ilk gönderdiğimde farkında değildim. Ancak geri yüklenenler aşağıdaki sorunlara sahiptir: Sunucumuz yanlış yapılandırılmışsa, bir top sakız ve kablo askısı varsa, tam olarak aynı yanlış yapılandırılmış duruma geri yüklemek istemeyiz. Yine de favori verilerimizi istiyoruz.
Sandra,

Kurtarma noktanızın amacına ve başarısızlık alanlarınıza uygunsa, bu yedeği başka bir depoya da verme hakkında biraz daha yazmıştım. Ama bunu kısa olmak için dışarıda bıraktım. Yedeklerin yalnızca bir parçası olduğu iyi bir iş sürekliliği planı bu riskleri belirler ve ele alır.
John Mahowald

1

Küçük sanal özel sunucum için BackupPC kullanıyorum, bu oldukça iyi çalışıyor. BackupPC, başlık altında rsync kullanabilir ve tam ve artımlı yedeklemeleri destekler. Bir göz atın ve gereksinimlerinizi karşılayıp karşılamayacağını görün.


1

Sisteminizi ZFS'de çalıştırın. Ardından, aşağıdakilere benzer bir şey kullanarak anlık, atomik bir anlık görüntü alabilirsiniz:

# zfs snap -r tank@name-of-backup

nerede tanksenin ZFS havuzu adlı odur. Bu anlık görüntünün, dosya sisteminin ve tüm alt dosya sistemlerinin anlık bir anlık anlık görüntüsü olması garanti edilir.

Anlık görüntüyü oluşturduktan sonra, zfs sendve tuşlarını kullanarak başka bir ana bilgisayara aktarabilirsiniz ssh.


0

Bence sunucuyu iç linux komutuyla neyin ve niçin çalıştırdığınızın mümkün olamayacağına, tüm verileri ve kütüphaneleri taklit etmeniz / aktarmanız gerekiyor. Vmware üzerinde çalışıyor ve iyi yapılandırılmışsa, canlı geçiş sağlar. Yoksa üçüncü parti araçları kullanmak zorundasın. Umarım bu size yardımcı olur. Bazı daha fazla referans Canlı sunucuyu nasıl yedekleyebilirim?

Rsync, verileri sunucular arasında senkronize etmek için iyi bir komuttur.


0

Eksik bir kontrol listesine veya listeden bir parçayı kaçırmanın yanı sıra eksik bitlere (artık) güvenmenize gerek duymadığınız 2 çözüm vardır, belki de gözden kaçırılmış bir şey yüzünden.

İlk olarak, bunu temel donanım platformu üzerinde daha fazla kontrole sahip bir platforma taşırsanız, sunucu çalışırken tüm dosyaların disk görüntülerini alabilirsiniz. Örneğin, AWS'de bir EBS diskinin anlık görüntüsünü alabilir ve daha sonra başka bir anlık görüntüyü yaparken yalnızca farkları ödeyebilirsiniz.

İkinci olarak, sunucunuzun tamamının kurulumunu Ansible gibi bir yapılandırma yönetim sistemi ile yazmanızı tavsiye ederim. Bu irade

  • kaynak denetiminde yapılandırdığınız her şeyi belgeleyin

  • komut dosyalarınızın güncel olduğundan emin olmak için sunucuyu yedeklemeden veya çıplak metalden yeniden oluşturmanızı test etmenizi sağlar

  • betiği daha küçük bir işletim sisteminde, daha küçük değişikliklerle yeniden çalıştırmanıza izin verir.


1
Anlaşılan Linode’de de enstantaneler yapabilirsin. Ansible'ı kontrol edeceğim! Bu aslında başlangıçta bilmek istediğim bir konu, ama böyle bir şey - ve hiç duymamıştım [demek istediğim, harika Hainish kitaplarının kurgusal cihazlarını duymuştum] - harika geliyor!
Sandra
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.