Skip to content Prejsť na obsah


How to create automated Linux/Unix backups Ako vytvoriť automatizovaný Linux / Unix zálohovanie

Linux

“A stitch in time saves nine”, goes an old saying. "Pícha v čase šetrí deväť", platí staré príslovie. In the world of computers we refer to that stitch as backups. Vo svete počítačov nájdete v tomto steh ako zálohy. When running a production IT infrastructure, it is imperative that we achieve an uptime on our servers and applications of as close to a hundred percent as possible. Pri spustení výroby IT infraštruktúru, je nevyhnutne potrebné, aby sa dosiahlo uptime na naše servery a aplikácie čo najviac približuje sto percent, ako je to možné. While there are a number of ways to make an IT infrastructure solid, it is impossible to make it failure proof. Aj keď existuje mnoho spôsobov, ako urobiť solídne IT infraštruktúry, je nemožné, aby bolo zlyhanie dôkaz. So we make a plan B. Tak sme sa vymyslieť plán B.

Servers are made of three broad layers – the hardware, the operating system and applications, and the data. Servery sú vyrobené z troch hlavných vrstiev - hardvér, operačný systém a aplikácie a dáta. In case of a hardware failure it is rather simple to replace the machine with a new one. V prípade zlyhania hardvéru, je pomerne jednoduché nahradiť stroj s novým. Installing the operating system and applications too are relatively simple. Inštalácia operačného systému a aplikácií tiež sú pomerne jednoduché. The part that is hard to replace is the data and configuration that your applications use. Časť, ktorá sa ťažko nahradiť, je dát a nastavení, ktoré vaša aplikácia používať. In case of failure this is the part that can not be replaced. V prípade neúspechu je to časť, ktorá nemôže byť nahradená. So we backup that data on a regular basis. Tak sme sa, že zálohovanie dát na pravidelnom základe. We back it up in such a way that it becomes easy to retrieve in case of emergency. Sme späť to takým spôsobom, že sa stane ľahko získať v prípade núdze.

I will guide you through writing a script to take daily backups on your system. Ja vás skrze písanie skrípt, aby denné zálohy vášho systému. For this exercise I will use a server that runs the Apache web server, a MySQL database server, and has a directory on the /home partition that contains some data that needs to be backed up. K tomuto kroku ich budem používať server, ktorý prevádzkuje webový server Apache, databázový server MySQL a má adresár na / home oddielu, ktorý obsahuje niektoré údaje, ktoré musia byť zálohované. We will also backup the previous day's Apache access logs in a separate backup directory. Budeme tiež zálohovať včerajšie Apache prístup prihlási samostatné záložný adresár. First, we need to create a directory where our backups will reside. Po prvé, musíme vytvoriť adresár, kde naša zálohy bude bývať. As part of the exercise I have created a directory called BACKUP on the /opt partition. V rámci tejto činnosti som vytvoril adresár s názvom BACKUP na / opt partition. We will organize the backups in this directory so that each days backup resides in a directory formed like this – /opt/BACKUP/YEAR/MONTH/DATE/ . Zorganizujeme zálohy v tomto adresári tak, že každý deň zálohu býva v adresári vytvorená ako je táto - / opt / BACKUP / rok / mesiac / DATE /. So on the 11th of August 2008 the backups will go into /opt/BACKUP/2008/08/11/ . Tak na 11 auguste 2008 zálohy pôjde do / opt/BACKUP/2008/08/11 /. Let's create these directories. Poďme sa vytvorenie týchto adresárov. Run the following set of commands as the root user. Spustite nasledujúcu sadu príkazov ako root.

# mkdir -p /opt/backup/DATA/2008 # Mkdir-p / opt/backup/DATA/2008
# cd /opt/backup/DATA/2008 # Cd / opt/backup/DATA/2008
# mkdir 01 02 03 04 05 06 07 08 09 10 11 12 # Mkdir 01 02 03 04 05 06 07 08 09 10 11 12
# cd /opt/backup/DATA/ # Cd / opt / backup / DATA /
# cp -r 2008 2009 # Cp-r 2008 2009
# cd /opt/backup/ # Cd / opt / backup /
# cp -r DATA LOG # Cp-r DATA LOG

See note below before issuing this last command. Pozri nižšie uvedený pred vydaním tohto posledného príkazu.

# chown -R calvin.calvin /opt/backup # Chown-R calvin.calvin / opt / záložné

We now have two sets of backup directories – one for data and another for log files. Teraz máme dva súbory zálohovať adresára - jeden pre dáta a ďalšie pre log súbory. With the backups directories created we are now ready to start writing the script. Note: I'm using the user calvin throughout this article. Pri zálohovaní adresáre vytvorené sme teraz pripravení začať písať scenár. Poznámka: I'm using užívateľ calvin v celom článku. Please replace calvin with your own username. Vymeňte calvin s vlastným užívateľským menom.


########################################################### ################################################## #########
# CODE BEGINS HERE # CODE začína tu
########################################################### ################################################## #########

#!/bin/bash #! / Bin / bash

# SERVER DATA BACKUP V1.0 # SERVER Zálohovanie dát V1.0

######################### #########################
# BACKUP CONFIG # BACKUP CONFIG
######################### #########################

#Configure the month, date, and day # Konfigurácia mesiac, dátum a deň
YEAR=`date +”%Y”` # 2008 ROK = `date +"% Y "` # 2008
MONTH=`date +”%m”`# 11 MESIAC = `date +"% m "` # 11
DAY=`date +”%d”` # 14 DEN = `date +"% d "` # 14
YESTERDAY=`date –date=”yesterday” +%Y-%m-%d` # 2008-11-13 VČERA = `date-date =" včera "+% Y-% m-% d` # 2008-11-13
YESTERDAY_DATE=`date –date=yesterday +%d` # 13 YESTERDAY_DATE = `date-date = včerajšie +% d` # 13
YESTERDAY_MONTH=`date –date=yesterday +%m` # 11 YESTERDAY_MONTH = `date-date = včerajšie +% m` # 11
YESTERDAY_YEAR=`date –date=yesterday +%Y` # 2008 YESTERDAY_YEAR = `date-date = včerajšie +% Y` # 2008
TODAY=`date +%Y-%m-%d` # 2008-11-14 Včera = `date +% Y-% m-% d` # 2008-11-14
TODAY_DATE=`date +%d` # 14 TODAY_DATE = `date +% d` # 14

# directories to backup to Adresáre # na zálohovanie dát na
DATA_BACKUP_PARENT_DIR=/opt/backup/DATA/ # <-- Change this your data backup dir DATA_BACKUP_PARENT_DIR = / opt / backup / data / # <- Zmeniť to vaša zálohovanie dát dir
LOG_BACKUP_PARENT_DIR=/opt/backup/LOG/ # <-- Change this your log backup dir LOG_BACKUP_PARENT_DIR = / opt / backup / log / # <- Zmeniť toto svoje prihlasovacie záložné dir

# Apache Document Root Directory # Apache Dokument Root Directory
APACHE_DOCROOT=/var/www/html/ APACHE_DOCROOT = / var / www / html /

# MySQL Database config # MySQL databázy config
DB_IP="localhost" # <-- Change this to the IP of your database server DB_IP = "localhost" # <- Zmeniť to IP databázového servera
DB_USER="calvin" # <-- Change this to your database username DB_USER = "Calvin" # <- Zmeniť toto meno do databázy
DB_PASS="calvin_password" # <-- Change this to your database password DB_PASS = "calvin_password" # <- Zmeniť toto heslo do databázy
DB_NAME="clientlist" # <-- Change this to your database name DB_NAME = "clientlist" # <- Zmeniť toto meno do databázy

# Apache Log Dir # Apache Log Dir
APACHE_LOG_DIR="/var/log/httpd/" # <-- Change this to the path data of your logs APACHE_LOG_DIR = "/ var / log / httpd /" # <- Zmeniť to údaje o trase vašej guľatiny

# Application Files' Dir # Aplikácia Files 'Dir
APP_FILES="/home/calvin/application_files/" # <-- Change this to the path of the data directory APP_FILES = "/ home / calvin / application_files /" # <- Zmeňte to na cestu dátového adresára

# Config Dir # Config Dir
CONFIG_DIR="/etc/" # <-- Change this to the path data directory CONFIG_DIR = "/ etc /" # <- Zmeniť to cestu k adresáru data

# Mail report address # Správa Poštová adresa
EMAIL_ID="you@youremailid.com" # <-- Change this to your e-mail ID EMAIL_ID = "you@youremailid.com" # <- zmeniť na Váš e-mail ID

########################################################### ################################################## #########
# DATA BACKUP # Zálohovanie dát
########################################################### ################################################## #########

# Create and go into backup directory # Vytvorenie a ísť do záložného adresára
cd $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH cd $ DATA_BACKUP_PARENT_DIR / $ YEAR / $ MESIAC
mkdir $DAY mkdir $ DEN
cd $DAY cd $ DEN

# Database backup # Zálohovanie databázy
mysqldump -h ${DB_IP} -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${DB_NAME}.db mysqldump-h $ () DB_IP-u $ () DB_USER-p $ () $ (DB_PASS DB_NAME)> $ () DB_NAME. db
tar -zcvf ${DB_NAME}.tar.gz ${DB_NAME}.db tar-zcvf DB_NAME $ (). tar.gz $ () DB_NAME. db
rm -f ${DB_NAME}.db rm-f $ () DB_NAME. db

# /etc backup # / Etc zálohovanie
tar -zcf etc.tar.gz /etc tar-zcf etc.tar.gz / etc

# Application backup # Zálohovací aplikácie
tar -zcf Apache_Doc_Root.tar.gz ${APACHE_DOCROOT} tar-zcf Apache_Doc_Root.tar.gz $ () APACHE_DOCROOT
tar -zcf App_Files.tar.gz ${APP_FILES} tar-zcf App_Files.tar.gz $ () APP_FILES

########################################################### ################################################## #########
# LOG BACKUP # BACKUP LOG
########################################################### ################################################## #########

# Create and go into backup directory # Vytvorenie a ísť do záložného adresára
cd $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH cd $ LOG_BACKUP_PARENT_DIR / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH
mkdir $YESTERDAY_DATE mkdir $ YESTERDAY_DATE
cd $YESTERDAY_DATE cd $ YESTERDAY_DATE

# HTTPD Log Backup # HTTPD Log Zálohovanie
for i in ${APACHE_LOG_DIR}/access_log.${YESTERDAY}*; do cp $i .; done for i in $ () APACHE_LOG_DIR / access_. VČERA $ () *; do cp $ i.; urobiť
for i in access_log.${YESTERDAY}*; do gzip $i; done aj pre v accessjog. VČERA $ () *; do gzip $ i; urobiť

########################################################### ################################################## #########
# Send out mail notifications # Send ven mailových oznámenia
########################################################### ################################################## #########

# Mail notify # Mail oznámiť
du -shc $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH/$DAY/* | mail -s “Backup for ${HOSTNAME}::DATA done du-SHC DATA_BACKUP_PARENT_DIR $ / $ YEAR / $ mesiac / $ DEN / * | mail-s "Backup for $ (HOSTNAME):: DATA urobiť :) ” ${EMAIL_ID} "$ () EMAIL_ID
du -shc $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH/$YESTERDAY_DATE/* | mail -s “Backup for ${HOSTNAME}::LOG done du-SHC LOG_BACKUP_PARENT_DIR $ / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH / $ YESTERDAY_DATE / * | mail-s "Backup for $ (HOSTNAME):: LOG urobiť :) ” ${EMAIL_ID} "$ () EMAIL_ID

########################################################### ################################################## #########
# CODE ENDS HERE # CODE ENDS HERE
########################################################### ################################################## #########

Save this script in a directory such as /home/calvin/scripts/backup.sh. Uložiť tento skript do adresára napríklad / home / calvin / skripty / backup.sh. Give executable permissions to the file: Dajte spustiteľný oprávnenie k súboru:

# chmod +x /home/calvin/scripts/backup.sh # Chmod + x / home / calvin / scripts / backup.sh

Now you are good to go. Teraz ste dobré ísť. Run the script form your command line: Spustite skript forme príkazového riadku:

# /home/calvin/scripts/backup.sh # / Home / calvin / scripts / backup.sh

You can also optionally add this script as a cron job so that it will be executed on a daily basis at a time of your choice. Môžete tiež voliteľne doplniť tento skript v cronu tak, že bude vykonaná na dennej báze v čase podľa Vášho výberu. If you want to run this script at 4 AM daily do the following: Ak chcete spustiť tento skript na 4 AM denne urobiť nasledovné:

# crontab -e # Crontab-e

Create a new line in the file that opens and add the following: Vytvoriť nový riadok v súbore, ktorý sa otvorí a pridajte nasledujúce:

0 4 * * * /home/calvin/scripts/backup.sh > /dev/null 0 4 * * * / home / calvin / scripts / backup.sh> / dev / null

There you go. Tu to máte. Your server will now backup your data, database, configuration files, application files, and log files to /opt/backup everyday at 4 AM. Váš server bude teraz zálohovať svoje dáta, databázy, konfiguračné súbory, súbory, aplikácie, a log súbory / opt / zálohovať každý deň v 4 ráno. A smart thing to do now would be to export these backups to a remote machine so that you don't lose your backups if your server faces problems. Chytrá vec teraz bude vyvážať tieto zálohy na vzdialenom počítači, aby ste neprišli o svoju zálohu, ak váš server zápasí s problémami. We will cover how to do that in my next article. Budeme na to, ako to, že v mojom ďalšom článku.

Posted in Publikované v Guest Blogger Guest Blogger , , Linux Linux . .

Related Posts: Súvisiace zmeny:

How to encrypt your Linux backups Ako zašifrovať Linux zálohovanie
Windows XP Recovery System Features Zotavení systému Windows XP Systémové funkcie
How to format and mount a USB hard drive in Linux Ako formáte a pripojiť USB pevný disk v Linuxe
How to block an IP address in IPTables in Linux Ako zablokovať IP adresu v iptables v Linuxe
How to Create a Multi Part Tar File with Linux Ako vytvoriť Multi časti Tar súboru s Linuxom

One Response Jedna odpoveď

Stay in touch with the conversation, subscribe to the Zostať v kontakte s konverzácia, prihláste sa RSS feed for comments on this post RSS kanál pre komentáre k tomuto príspevku . .

  1. Alberto says Alberto hovorí

    Hello Ahoj
    I'm testing the script, but I've errors with the lines: Som testovací skript, ale ja som chyby s riadky:

    YESTERDAY=`date –date=”yesterday” +%Y-%m-%d` # 2008-11-13 VČERA = `date-date =" včera "+% Y-% m-% d` # 2008-11-13
    YESTERDAY_DATE=`date –date=yesterday+%d` # 13 YESTERDAY_DATE = `date-date = včerajšie +% d` # 13
    YESTERDAY_MONTH=`date –date=yesterday +%m` # 11 YESTERDAY_MONTH = `date-date = včerajšie +% m` # 11
    YESTERDAY_YEAR=`date –date=yesterday +%Y` # 2008 YESTERDAY_YEAR = `date-date = včerajšie +% Y` # 2008

    The error I've is by example: Chyba jsem je príkladom:

    mysystem# YESTERDAY=`date .date=.yesterday. mysystem # VČERA = `date. dátume =. včera. +%Y-%m-%d` # 2008-11-13 +% Y-% m-% d `# 2008-11-13
    date: extra operator `+%Y-%m-%d' Dátum: extra prevádzkovateľ "+% Y-% m-% d '
    Try `date –help' for mor information Skúste `date-help 'mor informácie

    I've tested it in : Ubuntu Linux 7.04 I've tested to v: Ubuntu Linux 7.04

    Thanks (and good work !!) Vďaka (a dobrú prácu!)



Some HTML is OK Niektoré HTML je v poriadku

or, reply to this post via alebo odpovede na tento príspevok prostredníctvom trackback Trackback . .