Linuxbackup till windowsshare

Har byggt ett riktigt litet fulscript för backup av utvalt data från linux till ett windowsshare.
Tänkte dela med mig av det här.

Det som scriptet utför är följande:
1) Tar backup av alla användare under /home
2) Tar backup på apache2-konfiguration under /etc/apache2
3) Tar backup på utvalda mysql-databaser (denna del ska snyggas till lite)
4) Tar bort backuper äldre än 7 dagar
5) Loggar till fil i respektive backupkatalog.


#!/bin/sh
####################################
#
# Backupscript skapat av Qraze
# Skapat: 2015-04-28
# Uppdaterat: 2015-04-29
# Changelog:
# 2015-04-28 - Skapat scriptet v 1.0
# 2015-04-29 - Lagt till att skapa katalog för varje backuptillfälle
#
####################################

backup_home="/home"
backup_apache_config="/etc/apache2"

# Datum och servernamn
day=$(date +%Y-%m-%d_%H_%M)
hostname=$(hostname -s)
dirname=${day}_${hostname}
mkdir /root/backup/${dirname}

# Backupmål
dest="/root/backup/${dirname}"
# Loggning
logpath="${dest}/${hostname}_${day}.log"

printf "Scriptet startat: $(date)\r\n" >> $logpath
printf "Backupkatalog: ${dest}\r\n" >> $logpath
printf "\r\n" >> $logpath
printf "Backup av ${backup_home} [start]\r\n" >> $logpath
printf "\r\n" >> $logpath
cd $backup_home
for dir in */
do
base=$(basename "$dir")
printf "tar -czf ${dest}/${hostname}_${base}_${day}.tar.gz\r\n" >> $logpath
printf "\r\n" >> $logpath
tar -czf "${dest}/home_${base}.tar.gz" "$dir" >> $logpath
done
printf "Backup av ${backup_home} [slutfört]\r\n" >> $logpath

# backup_apache_config
printf "\r\n" >> $logpath
printf "Backup av apache config [start]\r\n" >> $logpath
printf "\r\n" >> $logpath
printf "tar -czf $dest/apache_config_.tar.gz $backup_apache_config\r\n"
tar -czf $dest/${hostname}_apache_config_${day}.tar.gz $backup_apache_config >> $logpath
printf "\r\n" >> $logpath
printf "Backup av apache config [slutfört]\r\n" >> $logpath

# Backup av MySQL-databaser
# Användare med behörighet att dumpa databaserna.
mysql_user="dbdumpuser"
# Lösenord för användaren
mysql_password="lösenord"
backup_dir="/root/backup"
printf "\r\n" >> $logpath
printf "Backup av MySQL-databaser [start]\r\n" >> $logpath
printf "\r\n" >> $logpath
mysqldump --user=${mysql_user} --password=${mysql_password} [databasnamn] | gzip > "${dest}/mysql_(databasnamn).${day}.gz"
printf "[databasnamn]\r\n" >> $logpath
printf "\r\n" >> $logpath
printf "Backup av MySQL-databaser [slutfört]\r\n" >> $logpath

# Radera backupfiler + loggar äldre än 7 dagar
files=$(find /root/backup -mtime +7)
printf "\r\n" >> $logpath
printf "\r\n" >> $logpath
printf "Raderar filer äldre än 7 dagar [start]\r\n" >> $logpath
for file in $files
do
printf "Raderar ${file}\r\n" >> $logpath
rm -rf $file
done
printf "Raderar filer äldre än 7 dagar [slutfört]\r\n" >> $logpath
printf "\r\n" >> $logpath
printf "Listar körningens backupfiler\r\n" >> $logpath
printf "\r\n" >> $logpath

# Lista alla filer i backupkatalogen.
for file in ${dest}/*
do
printf "${file}\r\n" >> $logpath
done
printf "\r\n" >> $logpath

printf "Scriptet slutfört" >> $logpath

Viktigt: Kör chmod 0600 följt av chmod +x på scriptfilen.sh. Detta då du har lösenord i klartext i filen så ska enbart ägaren kunna läsa filen.

För att schemalägga scriptet att exekveras var 12 timma, lägg in följande i crontab. Sökvägen ska pekas mot scriptfilen.
* */12 * * * /root/backup.sh

Du kan ladda ner scriptet i zip-format här.

Kommentera

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.