यह मार्गदर्शिका आपको Linux (और अधिकांश *nix ऑपरेटिंग सिस्टम) में स्वचालित बैकअप बनाने की प्रक्रिया में कदम दर कदम आगे ले जाएगी।
"समय में एक सिलाई नौ बचाता है", एक पुरानी कहावत है। कंप्यूटर की दुनिया में हम उस सिलाई को बैकअप के रूप में संदर्भित करते हैं। उत्पादन आईटी अवसंरचना चलाते समय, यह अनिवार्य है कि हम अपने सर्वरों और अनुप्रयोगों पर यथासंभव सौ प्रतिशत अपटाइम प्राप्त करें। जबकि आईटी अवसंरचना को ठोस बनाने के कई तरीके हैं, इसे विफलता प्रूफ बनाना असंभव है। इसलिए हम एक प्लान बी बनाते हैं।
सर्वर तीन व्यापक परतों से बने होते हैं - हार्डवेयर, ऑपरेटिंग सिस्टम और एप्लिकेशन और डेटा। हार्डवेयर विफलता के मामले में मशीन को एक नए के साथ बदलना आसान है। ऑपरेटिंग सिस्टम और एप्लिकेशन इंस्टॉल करना भी अपेक्षाकृत सरल है। जिस हिस्से को बदलना मुश्किल है, वह डेटा और कॉन्फ़िगरेशन है जो आपके एप्लिकेशन उपयोग करते हैं। विफलता के मामले में यह वह हिस्सा है जिसे बदला नहीं जा सकता है। इसलिए हम उस डेटा का नियमित रूप से बैकअप लेते हैं। हम इसका इस तरह से बैकअप लेते हैं कि आपात स्थिति में इसे पुनः प्राप्त करना आसान हो जाता है।
मैं आपके Linux सिस्टम पर स्वचालित दैनिक बैकअप लेने के लिए एक स्क्रिप्ट लिखने में आपका मार्गदर्शन करूंगा। इस अभ्यास के लिए मैं एक सर्वर का उपयोग करूंगा जो अपाचे वेब सर्वर, एक MySQL डेटाबेस सर्वर चलाता है, और /home पर एक निर्देशिका है। विभाजन जिसमें कुछ डेटा होता है जिसका बैकअप लेने की आवश्यकता होती है। हम एक अलग बैकअप निर्देशिका में पिछले दिन के अपाचे एक्सेस लॉग का भी बैकअप लेंगे। सबसे पहले, हमें एक निर्देशिका बनाने की आवश्यकता है जहां हमारे बैकअप रहेंगे। अभ्यास के हिस्से के रूप में मैंने बैकअप . नामक एक निर्देशिका बनाई है /ऑप्ट . पर विभाजन। हम इस निर्देशिका में बैकअप को व्यवस्थित करेंगे ताकि प्रत्येक दिन बैकअप इस तरह की निर्देशिका में बना रहे - /opt/BACKUP/YEAR/MONTH/DATE/ . इसलिए 11 अगस्त 2008 को बैकअप /opt/BACKUP/2008/08/11/ में चला जाएगा। . आइए इन निर्देशिकाओं को बनाएं। कमांड के निम्नलिखित सेट को रूट . के रूप में चलाएँ उपयोगकर्ता।
# mkdir -p /opt/backup/DATA/2008
# सीडी /ऑप्ट/बैकअप/डेटा/2008
# एमकेडीआईआर 01 02 03 04 05 06 07 08 09 10 11 12
# सीडी /ऑप्ट/बैकअप/डेटा/
# cp -r 2008 2009
# सीडी /ऑप्ट/बैकअप/
# cp -r डेटा लॉग
यह अंतिम आदेश जारी करने से पहले नीचे नोट देखें।
# chown -R calvin.calvin /opt/backup
अब हमारे पास बैकअप निर्देशिकाओं के दो सेट हैं - एक डेटा के लिए और दूसरा लॉग फ़ाइलों के लिए। बैकअप निर्देशिकाओं के निर्माण के साथ अब हम स्क्रिप्ट लिखना शुरू करने के लिए तैयार हैं। नोट: मैं उपयोगकर्ता का उपयोग कर रहा हूं केल्विन इस पूरे लेख में। कृपया केल्विन . को बदलें अपने स्वयं के उपयोगकर्ता नाम के साथ।
################################# ##############
# कोड यहां से शुरू होता है
#################### ############################
#!/बिन/बैश
# सर्वर डेटा बैकअप V1.0
#######################
# बैकअप कॉन्फिग
############# ##########
#माह, तारीख और दिन कॉन्फ़िगर करें
YEAR=`date +”%Y”` # 2008
MONTH=`date +”%m”`# 11
DAY=`date + “%d”` # 14
कल =`तारीख -दिनांक ="कल" +%Y-%m-%d` # 2008-11-13
YESTERDAY_DATE=`दिनांक -दिनांक=कल + %d` # 13
YESTERDAY_MONTH=`तारीख –दिनांक=कल +%m` # 11
YESTERDAY_YEAR=`दिनांक –दिनांक=कल +%Y` # 2008
TODAY=`दिनांक + %Y-%m-%d` # 2008-11-14
TODAY_DATE=`दिनांक +%d` # 14
बैकअप के लिए # निर्देशिकाएं
DATA_BACKUP_PARENT_DIR=/opt/backup/DATA/ # <- इसे अपने डेटा बैकअप में बदलें dir
LOG_BACKUP_PARENT_DIR=/opt/backup/LOG/ # <- इसे अपना लॉग बैकअप बदलें dir
# अपाचे दस्तावेज़ रूट निर्देशिका
APACHE_DOCROOT=/var/www/html/
# MySQL डेटाबेस कॉन्फिगरेशन
DB_IP="लोकलहोस्ट" # <- इसे अपने डेटाबेस सर्वर के आईपी में बदलें
DB_USER="केल्विन" # <- इसे अपने डेटाबेस उपयोगकर्ता नाम में बदलें
DB_PASS="calvin_password" # <- इसे अपने डेटाबेस पासवर्ड में बदलें
DB_NAME="क्लाइंटलिस्ट" # <- इसे अपने डेटाबेस के नाम में बदलें
# Apache Log Dir
APACHE_LOG_DIR="/var/log/httpd/" # <- इसे अपने लॉग के पाथ डेटा में बदलें
# एप्लिकेशन फ़ाइलें 'Dir
APP_FILES="/home/calvin/application_files/" # <- इसे डेटा निर्देशिका के पथ में बदलें
# कॉन्फिगर डिर
CONFIG_DIR="/etc/" # <- इसे पाथ डेटा डायरेक्टरी में बदलें
# मेल रिपोर्ट पता
EMAIL_ID="[email protected]" # <- इसे अपनी ई-मेल आईडी में बदलें
############################################# ###
# डेटा बैकअप
############################### ################
# बैकअप निर्देशिका बनाएं और उसमें जाएं
cd $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH
mkdir $DAY
cd $DAY
# डेटाबेस बैकअप
mysqldump -h ${DB_IP} -u ${DB_USER} -p${DB_PASS} ${DB_NAME}> ${DB_NAME}.db
tar -zcvf ${DB_NAME}.tar .gz ${DB_NAME}.db
rm -f ${DB_NAME}.db
# /etc बैकअप
tar -zcf etc.tar.gz /etc
# एप्लिकेशन बैकअप
tar -zcf Apache_Doc_Root.tar.gz ${APACHE_DOCROOT}
tar -zcf App_Files.tar.gz ${APP_FILES}
############################################# ###
# लॉग बैकअप
############################### ################
# बैकअप निर्देशिका बनाएं और उसमें जाएं
सीडी $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH
mkdir $YESTERDAY_DATE
सीडी $YESTERDAY_DATE
${APACHE_LOG_DIR}/access_log में मेरे लिए # HTTPD लॉग बैकअप
।${YESTERDAY}*; सीपी $ मैं करो।; किया
मेरे लिए access_log में।${YESTERDAY}*; gzip $i करें; हो गया
############################################# ###
# मेल सूचनाएं भेजें
############################## #################
# मेल सूचित करें
du -shc $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH/$DAY/* | मेल-एस "${HOSTNAME} के लिए बैकअप::डेटा किया गया :)" ${EMAIL_ID}
du -shc $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH/$YESTERDAY_DATE/* | मेल-एस "${HOSTNAME} के लिए बैकअप ::लॉग किया गया :)" ${EMAIL_ID}
############################################# ###
# कोड यहां समाप्त होता है
############################### #################
इस स्क्रिप्ट को /home/calvin/scripts/backup.sh जैसी निर्देशिका में सहेजें। फ़ाइल को निष्पादन योग्य अनुमतियाँ दें:
# chmod +x /home/calvin/scripts/backup.sh
अब आप जाने के लिए अच्छे हैं। अपनी कमांड लाइन के रूप में स्क्रिप्ट चलाएँ:
# /home/calvin/scripts/backup.sh
आप वैकल्पिक रूप से इस स्क्रिप्ट को क्रॉन जॉब के रूप में भी जोड़ सकते हैं ताकि इसे आपकी पसंद के समय पर दैनिक आधार पर निष्पादित किया जा सके। यदि आप इस स्क्रिप्ट को रोजाना सुबह 4 बजे चलाना चाहते हैं तो निम्न कार्य करें:
# क्रोंटैब-ई
खुलने वाली फ़ाइल में एक नई लाइन बनाएं और निम्नलिखित जोड़ें:
0 4 * * * /home/calvin/scripts/backup.sh> /dev/null
तुम वहाँ जाओ। आपका सर्वर अब /opt/backup में आपके डेटा, डेटाबेस, कॉन्फ़िगरेशन फ़ाइलों, एप्लिकेशन फ़ाइलों और लॉग फ़ाइलों का बैकअप लेगा। हर रोज सुबह 4 बजे - पूरी तरह से स्वचालित लिनक्स बैकअप! एक बढ़िया अगला कदम उन्हें एन्क्रिप्ट करना है :)