Hoe maak geautomatiseerde Linux / Unix backups

on November 18, 2008 door Sukrit Dhandhania op 18 november 2008

Linux

"Een steek in de tijd bespaart negen", gaat een oud gezegde. In de wereld van computers verwijzen we naar dat steek als back-ups. Bij het draaien van een productie van IT-infrastructuur, is het absoluut noodzakelijk dat we een uptime van onze servers en toepassingen van zo dicht op een honderd procent mogelijk zijn. Hoewel er een aantal manieren om een solide IT-infrastructuur, is het onmogelijk om het niet bewijzen. Dus maken we een plan B.

Servers zijn gemaakt van drie brede lagen - de hardware, het besturingssysteem en toepassingen, en de gegevens. In het geval van een hardwarestoring is het vrij eenvoudig om vervanging van de machine met een nieuwe. Het installeren van het besturingssysteem en applicaties te zijn betrekkelijk eenvoudig. Het deel dat is moeilijk te vervangen is de gegevens en de configuratie van uw toepassingen gebruiken. In geval van mislukking dit is het deel dat niet kan worden vervangen. Dus we back-up die gegevens op een regelmatige basis. Wij back-up op een zodanige wijze dat zij gemakkelijk op te halen in geval van nood.

Ik zal leiden u door het schrijven van een script om dagelijkse back-ups op uw systeem. Voor deze oefening zal ik gebruik maken van een server die draait de Apache web server, een MySQL database server, en heeft een map op de / home partitie die bevat een aantal gegevens dat moet worden ondersteund. We zullen ook een reservekopie van de vorige dag Apache toegangslogbestanden in een aparte backup directory. Ten eerste moeten we een directory waar onze back-ups zullen verblijven. Als onderdeel van de oefening Ik heb een map back-up op de / opt partitie. We zullen het organiseren van de back-ups in deze map, zodat iedere dag back-up verblijft in een directory gevormd zoals deze - / opt / backup / jaar / maand / DATE /. Dus op 11 augustus 2008 worden de back-ups gaan in / opt/BACKUP/2008/08/11 /. Laten we het creëren van deze directories. Voer de volgende reeks van commando's als root gebruiker.

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

Zie de opmerking hieronder voor de afgifte van deze laatste opdracht.

# Chown-R calvin.calvin / opt / backup

We hebben nu twee sets van de back-directories - een voor en een ander voor logbestanden. Met de back-ups directories aangemaakt zijn we nu klaar om te beginnen met het schrijven van het script. Opmerking: Ik gebruik de gebruiker calvin in dit artikel. Vervang calvin met je eigen gebruikersnaam.


################################################## #########
# CODE BEGINT HIER
################################################## #########

#! / bin / bash

# SERVER Data Backup V1.0

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

# Stel de maand, datum en dag
JAAR = `date +% Y" `# 2008
MAAND = `date +"% m "" # 11
DAG = `date +"% d "" # 14
YESTERDAY = "date-date =" gisteren "+% Y-% m-% d" # 2008-11-13
YESTERDAY_DATE = `date-date = gisteren +% d" # 13
YESTERDAY_MONTH = `date-date = gisteren +% M" # 11
YESTERDAY_YEAR = `date-date = gisteren +% Y" # 2008
TODAY = `date +% Y-% m-% d" # 2008-11-14
TODAY_DATE = `date +% d" # 14

# Mappen te back-up op
DATA_BACKUP_PARENT_DIR = / opt / backup / DATA / # <- Wijzig dit uw data backup r.
LOG_BACKUP_PARENT_DIR = / opt / backup / log / # <- Wijzig dit je log back r.

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

# MySQL database config
DB_IP = "localhost" # <- Verander dit naar het IP van uw database server
DB_USER = "Calvin" # <- Verander dit naar uw database gebruikersnaam
DB_PASS = "calvin_password" # <- Verander dit naar uw database wachtwoord
DB_NAME = "clientlist" # <- Verander dit naar uw database naam

# Apache Aanmelden Dir
APACHE_LOG_DIR = "/ var / log / httpd /" # <- Verander dit naar het pad gegevens van je logs

# Aanvraagdossiers' Dir
APP_FILES = "/ home / calvin / application_files /" # <- Verander dit naar het pad van de directory

# Config Dir
CONFIG_DIR = "/ etc /" # <- Verander dit naar het pad data directory

# Mail verslag adres
EMAIL_ID = "you@youremailid.com" # <- Verander dit naar uw e-mail-ID

################################################## #########
# Data Backup
################################################## #########

# Create en ga naar de backup-directory
cd $ DATA_BACKUP_PARENT_DIR / $ JAAR / $ MAAND
mkdir $ DAG
cd $ DAG

# Database backup
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 backup
tar-zcf etc.tar.gz / etc

# Toepassing backup
tar-zcf Apache_Doc_Root.tar.gz $ () APACHE_DOCROOT
tar-zcf App_Files.tar.gz $ () APP_FILES

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

# Create en ga naar de backup-directory
cd $ LOG_BACKUP_PARENT_DIR / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH
mkdir $ YESTERDAY_DATE
cd $ YESTERDAY_DATE

# HTTPD Aanmelden Backup
for i in $ (APACHE_LOG_DIR) / toegang_log. $ (YESTERDAY) *; doen cp $ i.; gedaan
voor i in toegang_log. $ (YESTERDAY) *; doen gzip $ i; gedaan

################################################## #########
# Stuur mailmeldingen
################################################## #########

# Mail kennis
du-SHC $ DATA_BACKUP_PARENT_DIR / $ JAAR / $ maand / $ DAY / * | mail-s "Backup for $ (HOSTNAME):: DATA gedaan:)" $ (EMAIL_ID)
du-SHC $ LOG_BACKUP_PARENT_DIR / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH / $ YESTERDAY_DATE / * | mail-s "Backup for $ (HOSTNAME):: LOG gedaan:)" $ (EMAIL_ID)

################################################## #########
# CODE ENDS HIER
################################################## #########

Sla dit script in een directory, zoals / home / calvin / scripts / backup.sh. Geef uitvoerbare permissies van het bestand:

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

Nu bent u klaar om te gaan. Voer het script van je opdrachtregel:

# / Home / calvin / scripts / backup.sh

U kunt ook eventueel voeg dit script als een cronjob zodat deze zal worden uitgevoerd op een dagelijkse basis in een tijd van uw keuze. Als u wilt uitvoeren, dit script op 4 uur per dag het volgende doen:

# Crontab-e

Maak een nieuwe regel in het bestand dat wordt geopend en voeg de volgende tekst:

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

Daar ga je. Uw server zal nu backup van uw gegevens, database-, configuratie-bestanden, de toepassing bestanden en logbestanden naar / opt / backup dagelijks om 4 uur. Een slimme ding te doen zou zijn om de uitvoer van deze back-ups naar een externe machine zodat je niet verliest als je back-ups van uw server problemen. We zullen ook bekijken hoe dat te doen in mijn volgende artikel.

Verwante Posten:
  • Windows XP Recovery System Features
  • Verhoog uw Linux / Unix Productiviteit: Hoe gebruik je crontab
  • Het downloaden van bestanden van de Linux command line
  • Walkthrough: Time Machine voor OS X 10.5 Leopard
  • Hoe een backup van uw bestanden naar uw Dreamhost account (OS X)
  • Get Simple Help tutorials net zoals deze in uw e-mail inbox elke dag - gratis! Geef uw email adres in:

    U kunt altijd afmelden voor deze e-mail abonnement op elk gewenst moment.


    Bookmark en Share

    1 comment… read it below or (1 comment ... lees het hieronder of voeg een )

    1 Alberto 12.09.08 op 5:56

    Hallo
    Ik ben het testen van het script, maar ik heb fouten met de lijnen:

    YESTERDAY = "date-date =" gisteren "+% Y-% m-% d" # 2008-11-13
    YESTERDAY_DATE = `date-date = gisteren +% d" # 13
    YESTERDAY_MONTH = `date-date = gisteren +% M" # 11
    YESTERDAY_YEAR = `date-date = gisteren +% Y" # 2008

    De fout die ik heb is bij voorbeeld:

    mysystem # YESTERDAY = `date. datum =. gisteren. +% Y-% m-% d "# 2008-11-13
    datum: extra operator "+% Y-% m-% d '
    Probeer `date-help 'voor meer informatie

    Ik heb het getest in: Ubuntu Linux 7.04

    Dankzij (en goed werk!)

    Verlaat een Commentaar

    U kunt deze HTML-tags en attributen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>