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