लिनक्स - किसी सर्वर का बैकअप लेते समय मुझे कौन सी निर्देशिकाओं को बाहर करना चाहिए?


37

मैं एक लिनक्स सर्वर का बैकअप ले रहा हूं और इसे दूसरे सर्वर पर स्टोर कर रहा हूं।

मैंने एक साधारण से शुरुआत की

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

तब किसी ने बताया कि मुझे वापस नहीं जाना चाहिए /proc, क्योंकि आप /procएक सर्वर को दूसरे पर पुनर्स्थापित नहीं करना चाहते हैं ।

क्या कुछ और है जो मुझे शामिल होना चाहिए / नहीं?

मसलन, किस बारे में /sys?

जवाबों:


24

यह वास्तव में इस बात पर निर्भर करता है कि आप अपने सिस्टम को कैसे पुनर्स्थापित करने जा रहे हैं। यदि आप पुनर्निर्माण करेंगे तो आपको केवल अपनी सेवाओं के लिए कॉन्फ़िगरेशन / डेटा फ़ाइलों की आवश्यकता होगी (जैसे: / etc, / opt, / var, / home)

यदि आप एक पूर्ण सिस्टम रिस्टोर के बाद हैं, तो आप इसे छोड़ सकते हैं / खरीद सकते हैं, / बूट और / देव। फिर आप अपने बूट मीडिया से न्यूनतम ओएस स्थापित कर सकते हैं और फिर अपने बैकअप के माध्यम से अपने सिस्टम को पुनर्स्थापित कर सकते हैं।

बेशक, सबसे अच्छा बैकअप वह है जिसे परीक्षण और सत्यापित किया गया है

इस तरह से छोड़ें कि आपको क्या लगता है कि आपको क्या ज़रूरत नहीं है, VM में पुनर्स्थापित करने का प्रयास करें और सत्यापित करें कि आप इस डेटा का उपयोग करके अपना सिस्टम वापस पा सकते हैं।


5
/bootपूरी तरह से न छोड़ें - आपको पुराने बूट कॉन्‍फ़िगर की तुलना नए बूट कॉन्‍फ़िगर से करने की आवश्‍यकता हो सकती है। बस मैन्युअल रूप से छोड़कर बहाल करने के लिए सुनिश्चित नहीं हैं /boot
क्वैक कोटेक्सोट

5
और साथ ही साथ / बहिष्कृत करें ... और नंगे धातु को पुनर्स्थापित करने के लिए, आप /etc/udev/rules.d/ को भी बेहतर तरीके से बाहर करेंगे।
वाज़ोक्स

2
यह भी खो दिया + जो फाइल सिस्टम के लिए मिला, / mnt और / मीडिया किसी भी माउंटेड डिवाइस को कॉपी नहीं करने के लिए
ब्लेड

29

दोनों /procऔर /sysआभासी फ़ाइल सिस्टम जो सिस्टम की स्थिति को प्रतिबिंबित, और आप कई क्रम पैरामीटर बदल (और कभी कभी सीधे स्मृति करने के लिए या एक डिवाइस के लिए तैयार करने जैसा ही है, और अधिक खतरनाक बातें करते हैं) अनुमति देते हैं। आपको कभी भी बैकअप या उन्हें पुनर्स्थापित नहीं करना चाहिए।

अधिकांश आधुनिक वितरणों में, /devबूट पर गतिशील रूप से बनाया गया है (यह एक मेमोरी फाइलसिस्टम है जो udevदोस्तों और दोस्तों द्वारा भरा गया है )। इसका समर्थन करने का कोई मतलब नहीं है, और इसे बहाल करने का प्रयास व्यर्थ है। हालांकि, अपने वितरण एक स्थिर उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो /dev, यह लागू नहीं होता (चेक /proc/mounts, अगर /devएक है tmpfsयह एक स्मृति फाइल सिस्टम है)।

अन्य फाइल सिस्टम हैं जिन्हें आपको वापस नहीं करना चाहिए; usbfs(आम तौर पर /proc/bus/usb, यदि सभी पर आरूढ़), debugfs(माना जाता है कि /sys/kernel/debugयदि सभी आरोहित हैं, लेकिन कुछ लोगों ने इसे कहीं और रख दिया है; तो शायद आपके पास यह नहीं है), devpts(आरोहित /dev/pts), अन्य tmpfsउदाहरण (अक्सर पाया जाता है /dev/shm, /var/run) /var/lock, और अन्य स्थान; उनका बैकअप लेना और उन्हें पुनर्स्थापित करना हानिरहित लेकिन व्यर्थ होना चाहिए, क्योंकि उनकी सामग्री शटडाउन पर खो जाती है), और कोई भी दूरस्थ फाइल सिस्टम या मैजिक ऑटोमैटिक डायरेक्टरी (बैकअप लेने या उन्हें पुनर्स्थापित करने का प्रयास करना) आपदा में समाप्त हो सकता है, जैसा कि आप कर सकते थे। अंत तक एक अलग मशीन को बैकअप / बहाल करना )। आपको भी सावधान रहना चाहिए /mediaऔर/mnt, बाहरी उपकरणों के रूप में (जैसे कि सीडी आप ड्राइव में भूल गए थे) वहां पाए जा सकते हैं, लेकिन आपने उन्हें किसी चीज़ को माउंट करने के उद्देश्य से भी इस्तेमाल किया होगा जिसे बैकअप किया जाना चाहिए।

ध्यान दें कि, ज्यादातर हानिरहित tmpfsउदाहरणों, नेटवर्क फाइल सिस्टम / ऑटोमाउंटर्स और हटाने योग्य मीडिया के अलावा, जिन फाइल सिस्टम को आपको वापस नहीं करना चाहिए /dev, वे सभी के वंशज हैं /proc, या /sys। आपके पास कोई नेटवर्क फ़ाइल सिस्टम (या automounters), और कोई हटाए जाने योग्य मीडिया, को छोड़कर है, तो /sysऔर /procऔर रिबूट करने के बाद एक (साफ करने के लिए पुनर्स्थापित tmpfsउदाहरण) पर्याप्त होना चाहिए।



8

/ Proc और / sys में कुछ विशेष फाइलें rsync को भ्रमित करती हैं। आप आमतौर पर या तो माउंटेड नेटवर्क फाइल सिस्टम का बैकअप नहीं लेना चाहते। स्पार्स फाइलें भी समस्या पैदा कर सकती हैं।

Add -x को एक फ़ाइल सिस्टम तक सीमित करने के लिए। कि सभी नेटवर्क फ़ाइल सिस्टम और / proc आदि से बचा जाता है। हालाँकि आपको प्रत्येक फाइल सिस्टम के लिए एक rsync चलाने की आवश्यकता होती है।

Add -S को स्पार्स फ़ाइलों को समझदारी से संभालने के लिए।


4

/ boot, / dev और / proc बैकअप के लिए काफी बेकार हैं - हालांकि, यदि आप जानते हैं कि आप जो कर रहे हैं वह बैकअप / बूट हो सकता है।

मैं बैकअप / परिवाद, / मीडिया, / mnt, / sbin, / bin, / srv, / sys, या / tmp भी नहीं करूंगा।

/ usr वैकल्पिक है, इस पर निर्भर करता है कि आपके पास बैकअप के लायक / usr में कुछ है या नहीं। यदि मैं आप थे तो मुझे उपयोगकर्ता के $ HOME, / var, और / etc (कॉन्फ़िगरेशन फ़ाइलों के लिए) का बैकअप लेने के बारे में सबसे अधिक चिंता है।

फिर भी, यह वास्तव में सभी बैकअप के प्रकार पर निर्भर करता है जिसे आप करना चाहते हैं। क्या यह एक वेब सर्वर है? क्या यह पर्सनल कंप्यूटर है? क्या यह एक शेल सर्वर है जिसमें निर्देशिकाओं का टन / घर है?


मैं एक नई मशीन पर बैकअप क्लोनिंग का उपयोग करके पुनर्स्थापित करना चाहता हूं
रोरी

"क्लोनिंग" से आपका क्या मतलब है? आप हमेशा dd और sfdisk sfdisk -d> partition_table.part dd का उपयोग करके कच्चे विभाजनों का बैकअप ले सकते हैं यदि = = dev / sda1 of = dev.sda1.img (प्रत्येक विभाजन के लिए ऐसा करें) तो, अपने नए सिस्टम पर: sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img of = / dev / sda1 (प्रत्येक विभाजन के लिए, फिर से)
माइकल Pobega

चूंकि टिप्पणी प्रणाली कोड टैग पसंद नहीं करती है, इसलिए मैंने एक और उत्तर पोस्ट किया।
माइकल पोबेगा

@MichaelPobega यदि आप कच्चे विभाजन का बैकअप लेते हैं जैसा कि आप कह रहे हैं तो आपको संपूर्ण डिस्क आकार की प्रतिलिपि बनानी होगी। जब आपने अपनी डिस्क का केवल 80BG उपयोग किया है तो 512GB कॉपी क्यों करें? आपके साथ rsyncन केवल आपने जो उपयोग किया है उसे कॉपी करें, बल्कि भविष्य के सिंकिंग को भी सक्षम करें, ताकि आप सुरक्षित रूप से इसके लिए क्रॉन जॉब चला सकें।
अधिकतम

इस साल के बाद वापस आकर, मेरे दशक के अनुभव ने मुझे सिखाया है कि आप सही हैं @ मैक्स।
माइकल पोबेगा

3

आप sfdisk और dd का उपयोग करके कुल बैकअप प्राप्त कर सकते हैं।


प्रत्येक हार्ड ड्राइव की विभाजन योजना का बैकअप लेने के लिए, आप इस तरह sfdisk का उपयोग करेंगे:

sfdisk -d /dev/sda  > parttable_sda.part

प्रत्येक विभाजन का बैकअप लेने के लिए आप dd का उपयोग कर सकते हैं, जैसे:

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

जहां /dev/sda1एकतरफा है, जैसे कि लाइव-सीडी बूट के साथ।

(ध्यान रखें कि आपको इस फ़ाइल को लिखने के लिए बहुत सी खाली जगह की आवश्यकता है, इसलिए आप इसे किसी बाहरी मीडिया को लिखना चाहते हैं) प्रत्येक विभाजन के लिए, एक समय में एक, और सब कुछ वापस करें।


फिर, आप कर सकते हैं एक और कंप्यूटर पर पुनर्स्थापित करने के लिए:

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

3
चेतावनी: ऐसा केवल तभी करें जब विभाजन अनमाउंट या माउंटेड रीड-ओनली हो। विभाजन की कच्ची सामग्री को डंप करना, जबकि यह लिखा जा रहा है कि बैकअप पर एक बुरी तरह से असंगत फाइल सिस्टम के साथ समाप्त हो सकता है (क्योंकि फाइलसिस्टम की शुरुआत के पास के ब्लॉक अंत के पास के ब्लॉक की तुलना में "पहले" कॉपी किए जाते हैं, और फाइल सिस्टम अल्गोरिद्म नहीं करते हैं इसकी अपेक्षा करें; आप इस समस्या से बच सकते हैं यदि आप किसी तरह फाइलसिस्टम का परमाणु स्नैपशॉट कर सकते हैं)। fsck आपकी मदद नहीं करेगा, क्योंकि इसके एल्गोरिदम भी उस क्रम पर निर्भर करते हैं जो फाइल सिस्टम डिस्क पर लिखता है।
सीजरबी

dd जाने का रास्ता है। LiveCD पर बूट करें, बिल्कुल। और dd if=/dev/urandom of=/dev/sdb bs=512 count=12लक्ष्य ड्राइव के एमबीआर और विभाजन तालिका को पोंछना महत्वपूर्ण है ।
एसडीसोलर

2

बाहर करने के बजाय, मैं आमतौर पर केवल वही बैकअप करता हूं जो मैं चाहता हूं। सहित: /home /etc /var(को छोड़कर /var/log)


1

मूल रूप से, छद्म-फाइलसिस्टम (/ proc, / sys, / dev / shm ...) का बैकअप लेने की आवश्यकता नहीं है।


1

जैसा कि इस महान समुदाय द्वारा बताया गया है:

/ dev / proc / sys / tmp / run / मीडिया / खोया + पाया / बूट (/ बूट वैकल्पिक है अन्य टिप्पणियां देखें)

संदर्भ के लिए मेरी अंतिम rsync कमांड (आर्क के साथ बाहरी मीडिया में माउंट / / रन / मीडिया / फ़्रेड / INTENSO / 'और' फ़्रेड 'नामक एक फ़ोल्डर का बैकअप लेने के लिए है):

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / lost + found --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / फ्रेड / INTENSO / फ्रेड /।

(बाहर की गई फाइलें बैश के तहत या टेक्स्ट फ़ाइल (--exclude-from = 'excude.txt') के साथ घुंघराले कोष्ठक (--exclude = {/ dev, / proc}) के साथ भी निर्दिष्ट की जा सकती हैं।

-P - शो प्रगति -a: संग्रह मोड -z: स्थानांतरण के दौरान सेक -एच: मानव-पठनीय प्रारूप में आउटपुट संख्या -m: प्रून खाली निर्देशिका -x: एक फ़ाइल-सिस्टम तक सीमित -v: क्रिया


1

मैं एक उबंटू 18.04 मशीन पर हूं और मैंने इन्हें बाहर कर दिया है:

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

इसके अलावा, विशिष्ट रूप से मेरे सेटअप के लिए, मैं इन्हें बाहर करता हूं:

/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

मैं आम तौर पर एक सिस्टम पर सब कुछ का समर्थन करने की आदत बनाता हूं , यहां तक ​​कि जो सामान मुझे कुछ भी पता है वह बैकअप के लिए बेकार है। यह सेट अप करने के लिए सरल है और आप 100% सुनिश्चित हो सकते हैं कि आपको बैकअप में शामिल सभी चीज़ों को प्राप्त करने की आवश्यकता है।


1
हाँ, लेकिन अनुवर्ती सवाल यह है कि आप अपने बैकअप से अनावश्यक रूप में क्या रिमूव करते हैं?
रोरी

जिस पर मैं प्रतिक्रिया दूंगा: "कुछ भी नहीं"।
मैक्सिमस मिनिमस

सच। आप इसे पुनर्स्थापना प्रक्रिया से बाहर करते हैं, न कि बैकअप से। लेकिन आप शायद अभी भी बाहर जाना चाहते हैं /procऔर /devइसलिए गरीबों को भ्रमित न करें rsync
टीजे क्राउडर

1
@ mh, आप पुनर्स्थापित / proc / kcore करेंगे, जो मूल सर्वर की मेमोरी है? वह थोड़ा मूर्खतापूर्ण लगता है ...
रोरी

0

मैं वेबसाइट के विकास के लिए एक परीक्षण सर्वर के रूप में एक उबंटू लिनक्स बॉक्स का उपयोग कर रहा हूं, और एक प्रलेखन विकि की मेजबानी के लिए। हर रात एक crontab MySQL डेटाबेस को / var / www में डंप करता है, और फिर सभी / var / www को ज़िप किया जाता है और बैकअप सर्वर पर दोहराया जाता है। यह आदर्श नहीं है, लेकिन यह पर्याप्त है। मुझे एक बिंदु पर सर्वर का पुनर्निर्माण करना था, और मैं वास्तव में चूक गया अपाचे और सांबा कॉन्फ़िगरेशन फ़ाइलें थीं।


0

मुझे लगता है कि आपके पास वर्चुअल मशीन पर लिनक्स नहीं है। यदि संभव हो, तो मैं वर्चुअलाइजेशन पर विचार करने का आग्रह करूंगा। वीएम स्तर पर बैकअप एक निरंतरता और उपयोग में आसानी का एक नया स्तर है। नि: शुल्क वर्चुअलाइजेशन उपकरण मौजूद हैं, इसलिए आपको आवश्यक रूप से VmWare या अन्य महंगे राक्षस उपकरण में निवेश करने की आवश्यकता नहीं है।


0

प्रश्न: किसी सर्वर का बैकअप लेते समय मुझे किन निर्देशिकाओं को छोड़ना चाहिए?

यहां एक स्क्रिप्ट है जिसका मैं अक्सर उपयोग करता हूं, एक Ubuntu 16.04 LTS लैपटॉप से ​​एक Ubuntu 16.04 LTS सर्वर। यह स्पष्ट रूप से दिखाता है कि पूर्ण बैकअप करते समय किन निर्देशिकाओं को छोड़ दिया जाना चाहिए:

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

के बहिष्करण पर ध्यान दें /mnt- जो कि प्रत्येक उबंटू प्रणाली में एक पूर्णकालिक बैकअप ड्राइव है जो क्रोन आधारित rsyncआत्म-बैकअप के लिए दिन में 4 बार घुड़सवार होता है। ये ड्राइव एंट्री द्वारा माउंट की जाती हैं fstabऔर हमेशा मौजूद रहती हैं। उन्हें एक बैकअप में दूसरे सिस्टम में शामिल करने के लिए डुप्लिकेट होगा।

इसी तरह, /mediaजहां यूएसबी ड्राइव माउंट होता है। उन्हें अलग से बैकअप दिया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.