Linux - Bir sunucuyu yedeklerken hangi dizinleri dışlamam gerekir?


37

Bir Linux sunucusunu yedekliyorum ve başka bir sunucuya saklıyorum.

Basit bir başlangıçla başladım

rsync -aPh --del server.example.com:/ /mnt/backup

Sonra birileri yedeklememem gerektiğini belirtti /proc, çünkü /procbir sunucuyu diğerine geri yüklemek istemiyorsunuz .

Katmam gereken / içermemem gereken başka bir şey var mı?

Mesela ne hakkında /sys?

Yanıtlar:


24

Bu gerçekten sisteminizi nasıl geri yükleyeceğinize bağlıdır. Yeniden inşa edecekseniz, yalnızca hizmetleriniz için yapılandırma / veri dosyalarına ihtiyacınız olacaktır (örneğin: / etc, / opt, / var, / home)

Tam bir sistem geri yüklemesinden sonraysanız, / proc, / boot & / dev komutunu atabilirsiniz. Ardından minimum işletim sistemini önyükleme ortamınızdan yükleyebilir ve ardından sisteminizi yedeklemeniz yoluyla geri yükleyebilirsiniz.

Elbette, en iyi yedekleme test edilmiş ve doğrulanmış olandır .

Bu nedenle, ihtiyacınız olmadığını düşündüğünüz şeyi atlayın, bir VM'de geri yüklemeyi deneyin ve bu verileri kullanarak sisteminizi geri alabileceğinizi doğrulayın.


5
/bootTamamen ihmal etmeyin - eski önyükleme yapılandırmasını yeni önyükleme yapılandırması ile karşılaştırmanız gerekebilir. Sadece manuel olarak geri yüklemediğinizden emin olun /boot.
quack quixote

5
Ve / sys'yi de hariç tutun ... Ve çıplak metale geri dönmek için, /etc/udev/rules.d/ adresini de hariç tutmalısınız.
wazoox

2
ayrıca + dosya sistemi için / mnt ve / media dosyalarının monte edilmiş herhangi bir cihazı kopyalayamadığını da kaybetti
blade

29

Her ikisi de /procve /syssistemin durumunu yansıtan sanal dosya sistemleridir ve birkaç çalışma zamanı parametresini değiştirmenize olanak sağlar (ve bazen doğrudan belleğe veya bir cihaza doğrudan yazmak gibi daha tehlikeli şeyler yapabilirsiniz). Bunları asla yedeklememeli veya geri yüklememelisiniz.

Çoğu modern dağıtımda, /devönyükleme sırasında dinamik olarak oluşturulur (doldurulmuş bir bellek dosya sistemidir udevve arkadaşlar). Yedeklemenin anlamı yok ve onu geri yüklemeye çalışmak boşuna. Dağıtım bir statik kullanmak üzere yapılandırılmış Ancak, /devbu (çek geçerli değildir /proc/mounts, eğer /devbir olduğunu tmpfsbir hafıza dosya sistemidir).

Yedeklememeniz gereken başka dosya sistemleri var; usbfs(genellikle de /proc/bus/usbtüm monte varsa,), debugfs(olması gerekiyordu /sys/kernel/debugtüm monte eğer, ama bazı insanlar başka bir yere koymak; muhtemelen bu bir yok), devpts(monte /dev/ptsdiğer) tmpfsörnekleri (genellikle bulunabilir /dev/shm, /var/run, /var/lockve diğer yerler; onları yedekleme ve geri yükleme, içerikleri kapanırken kaybolduğu için zararsız ancak anlamsız olmalıdır; ve uzaktaki herhangi bir dosya sistemi veya sihirli otomatik düzenleme dizinleri (onları yedeklemeye veya geri yüklemeye çalışmanız gibi) felakete yol açabilir. ( farklı bir makineye yedekleme / geri yükleme ). Ayrıca dikkatli olmalısınız /mediave/mntharici aygıtlar (sürücüde unuttuğunuz bir CD gibi) orada bulunabildiğinden, yedeklenmesi gereken bir şeyi takmak için bunları bilerek de kullanabilirsiniz.

Çoğunlukla zararsız dışında unutmayın tmpfs, örnekleri, ağ dosya sistemleri / automounters ve çıkarılabilir medya yedeklediğiniz tüm torunları olmamalı dosya sistemlerini /dev, /procya /sys. Eğer hiçbir ağ dosya sistemleri (veya automounters) ve hiçbir çıkarılabilir medya hariç varsa /sysve /procve yeniden bir (silmek için geri yükleme sonrasında tmpfsörneklerini) yeterli olacaktır.



8

/ Proc ve / sys içindeki özel dosyalardan bazıları rsync'i karıştırmaktadır. Genellikle bağlı ağ dosya sistemlerini de yedeklemek istemezsiniz. Seyrek dosyalar da sorunlara neden olabilir.

Bir dosya sistemine sınırlamak için -x ekleyin. Bu, tüm ağ dosya sistemlerini ve / proc'ları vb. Engeller. Ancak daha sonra bağladığınız her dosya sistemi için bir rsync çalıştırmanız gerekir.

Seyrek dosyaları makul bir şekilde işlemek için -S ekleyin.


4

/ boot, / dev ve / proc yedekleme için oldukça yararsızdır - yine de ne yaptığınızı biliyorsanız, yedekleme / önyükleme yapabilirsiniz.

Ayrıca / lib, / media, / mnt, / sbin, / bin, / srv, / sys veya / tmp yedeklemem.

/ usr, / usr'da yedeklemeye değer bir şeyin olup olmadığına bağlı olarak isteğe bağlıdır. Yerinde olsam, en çok kullanıcının $ HOME, / var ve / etc (yapılandırma dosyaları için) yedeklemesinden endişe ediyorum.

Yine de, bunların hepsi gerçekten yapmak istediğiniz yedekleme türüne bağlıdır . Bu bir web sunucusu mu? Bu kişisel bir bilgisayar mı? Bu, ev / altında tonlarca dizini olan bir kabuk sunucusu mu?


Yedeklemeyi yeni bir makineye klonlayarak geri yüklemek istiyorum
Rory

"Klonlama" derken ne demek istiyorsun? Ham bölümleri her zaman dd ve sfdisk sfdisk -d> partition_table.part dd eğer = / dev / sda1 / = dev.sda1.img (her bölüm için bunu yapın) kullanarak yeni sisteminizde yedekleyebilirsiniz: sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img of = / dev / sda1 (yine her bölüm için)
Michael Pobega

Yorum sistemi kod etiketlerini beğenmediğinden, başka bir yanıt gönderdim.
Michael Pobega

@MichaelPobega Söylediğiniz gibi ham bölümleri yedeklerseniz, tüm disk boyutunu kopyalamanız gerekir. Diskinizin yalnızca 80BG'sini kullanırken neden 512GB kopyalayın? İle rsyncdeğil sadece kullanmış sadece ne kopyalar, ancak güvenli bunun için bir cron işi çalışabilmesi için de, gelecek senkronizasyonunu sağlar.
Maksimum

Bu yıllara geri dönersek, on yıllık deneyimim bana @Max'ın doğru olduğunu öğretti.
Michael Pobega

3

Sfdisk ve dd tuşlarını kullanarak tam bir yedekleme yapabilirsiniz.


Her bir sabit sürücünün bölüm düzenini yedeklemek için sfdisk'i şöyle kullanırsınız:

sfdisk -d /dev/sda  > parttable_sda.part

Her bir bölümü yedeklemek için dd kullanabilirsiniz;

dd if=/dev/sda1 of=devsda1.img

Nerede /dev/sda1böyle bir canlı CD önyükleme ile, sistemden ayrıldı edilir.

(bu dosyayı yazmak için çok fazla boş alana ihtiyacınız olacağını unutmayın; bu nedenle harici bir ortama yazmak isteyebilirsiniz) Bunu her bölüm için, her seferinde bir tane yapın ve her şeyi yedekleyin.


Sonra başka bir bilgisayara geri yüklemek için şunları yapabilirsiniz:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition

3
UYARI: bunu sadece bölme sökülmüşse veya salt okunur monte edilmişse yapın. Bir bölümün ham içeriğini, yazarken, yedeklemede oldukça tutarsız bir dosya sistemi ile sonlandırabilir (çünkü dosya sisteminin başlangıcına yakın bloklar sonuna yakın bloklardan "daha önce" kopyalanır ve dosya sistemi algoritmaları bunu bekleyin; dosya sisteminin atomik bir görüntüsünü bir şekilde yapabilirseniz bu sorunu önleyebilirsiniz). fsck size yardımcı olmayacaktır çünkü algoritmaları aynı zamanda dosya sisteminin diske yazdığı sıraya da bağlıdır.
CesarB

DD gitmek için yoludur. Elbette bir LiveCD'de boot edin. Ve dd if=/dev/urandom of=/dev/sdb bs=512 count=12hedef sürücünün MBR'sini ve bölüm tablosunu silmek de önemlidir .
SDsolar

2

Dışlamak yerine, genellikle sadece istediğimi yedeklerim. Dahil olanlar: /home /etc /var(hariç /var/log)


1

Temel olarak, sözde dosya sistemlerinin (/ proc, / sys, / dev / shm ...) yedeklenmesi gerekmez.


1

Bu büyük topluluğun işaret ettiği gibi:

/ dev / proc / sys / tmp / çalıştır / medya / kayıp + bulundu / önyükleme (/ önyükleme isteğe bağlıdır, diğer yorumlara bakın)

Başvuru için son rsync komutum ('/ run / media / fred / INTENSO /' içine yerleştirilmiş harici medya ile Arch altında ve 'fred' adındaki bir klasöre yedekleme):

$ sudo rsync -Pazhmxv --exclude / run / media - exclude / dev - exclude / lost + found - exclude / tmp - exclude / proc - exclude / önyükleme - exclude / sys / / run / media / fred / INTENSO / fred /.

(dışlanan dosyalar Bash'in altındaki küme parantezleriyle (--exclude = {/ dev, / proc}) veya bir metin dosyasıyla (--exclude-from = 'excude.txt') de belirtilebilir.

-P: ilerlemeyi göster -a: arşiv modu -z: aktarım sırasında sıkıştır -h: insan tarafından okunabilir bir biçimde çıktı numaraları -m: boş dizinleri budala -x: bir dosya sistemi ile sınırla -v: verbose


1

Bir Ubuntu 18.04 makinesindeyim ve bunları hariç tuttum:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Ayrıca, özellikle kurulumum için bunları hariç tutuyorum:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk

0

Genelde sistemdeki her şeyi yedekleme alışkanlığı kazanırım, kesin olarak bildiğim şeyler bile yedekleme yapmanın bir yararı olmaz . Kurulumu daha kolaydır ve yedeklemede ihtiyacınız olan her şeyi alacağınızdan% 100 emin olabilirsiniz.


1
evet, ama takip eden soru, gereksiz olarak yedeklemenizden ne anlıyorsunuz?
Rory

Buna cevap vereceğim: "hiçbir şey".
Maximus Minimus

Doğru. Yedeklemenin kendisinden değil, geri yükleme işleminden dışlarsınız. Ama muhtemelen hala dışarıda kalmak istiyorsun /procve /devfakir küçükleri karıştırmamak için rsync.
TJ Crowder

1
@mh, orijinal sunucunun belleği olan / proc / kcore dosyasını geri yükler misiniz? Bu biraz saçma geliyor ...
Rory

0

Web sitesi geliştirme ve dokümantasyon wiki'sine ev sahipliği yapmak için bir test sunucusu olarak Ubuntu linux kutusunu kullanıyorum. Her gece bir crontab, MySQL veritabanını / var / www içine döker ve ardından / var / www'nin tümü sıkıştırılır ve yedekleme sunucusuna kopyalanır. Bu ideal değil, ama yeterli. Sunucuyu bir noktada yeniden kurmak zorunda kaldım ve tek özlediğim Apache ve Samba yapılandırma dosyalarıydı.


0

Sanal bir makinede Linux'un olmadığını varsayıyordum. Mümkünse sanallaştırmaya geçmeyi düşünürdüm. Vm seviyesindeki yedeklemeler yepyeni bir tutarlılık ve kullanım kolaylığı seviyesidir. Ücretsiz sanallaştırma araçları var, bu nedenle mutlaka VmWare veya diğer pahalı canavar araçlarına yatırım yapmanız gerekmez.


0

Soru: Bir sunucuyu yedeklerken hangi dizinleri dışlamam gerekir?

İşte sık kullandığım bir komut dosyası, bir Ubuntu 16.04 LTS dizüstü bilgisayardan Ubuntu 16.04 LTS sunucusuna. Tam yedekleme yapılırken hangi dizinlerin atlanması gerektiğini açıkça gösterir:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

/mntHer bir Ubuntu sisteminin, rsyncgünde 4 kez cron tabanlı kendi kendine yedekleme için monte edilmiş tam zamanlı bir yedekleme sürücüsünün bulunduğu - hariç tutulduğunu unutmayın . Bu sürücüler girişler tarafından monte edilir fstabve daima mevcuttur. Bunları başka bir sisteme yedeklemeye dahil etmek çoğaltıcı olacaktır.

Benzer şekilde, /mediaUSB sürücülerinin takıldığı yer. Ayrı yedeklenirler.

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.