"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.





























1 comment… read it below or (1 comment ... lees het hieronder of voeg een )
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