Automatisches - Server Backup Skript
Das folgende Skript, wurde erstellt, um wichtige Dateien eines Applikationsservers in regelmässigen Abständen automatisiert zu sichern. Zur Installation, wird das Skript immer jeweils auf das zu sichernde System kopiert und dort wie unten beschrieben eingerichtet.
Installation
Vor der Installation, muss sichergestellt werden, dass bereits ein funktionierender NFS-Server (Zur Speicherung des Backups) zur Verfügung steht. Die Server Adresse und die NFS-Freigabe muss anschliessend im Skript angepasst werden.
# vim /root/server_backup_script.sh
[PASTE THE SCRIPT SOURCECODE]
Nun wird das Backupskript zur Ausführung berechtigt und anschliessend im crontab der zu sichernden Maschine eingetragen. In meinem Bespiel, wird hier immer täglich um 12:00 das Skript automatisiert ausgeführt.
# chmod +x /root/server_backup_script.sh # vim /etc/crontab
0 12 * * * root /root/server_backup_script.sh
Skript Sourcecode
Filename: server_backup_script.sh
#!/bin/bash ################################################################################################ #******************* Backup Linux Server Script by Michael Reber - v 1.2 **********************# ################################################################################################ ################################################################################################ ## Variable Definition & System Vorbereitungen: backupdir=`hostname` today=`date +"%Y-%m-%d"` OLDBACKUP=`date -d "7 days ago" +"%Y-%m-%d"` ## System dependency Check: if [ -n "$(command -v apt-get)" ]; then if [ $(dpkg-query -W -f='${Status}' nfs-common 2>/dev/null | grep -c "ok installed") -eq 0 ]; then apt-get install nfs-common -y; fi else if [ $(yum -q list installed nfs-utils &>/dev/null && echo "1" || echo "0") -eq 0 ]; then yum install nfs-utils -y; systemctl start rpcbind && systemctl enable rpcbind; fi fi if [ ! -d "/mnt/server-backup" ]; then mkdir /mnt/server-backup fi ################################################################################################ ## Mount und bereitstellen des Backupverzeichnises: mount -t nfs -o rw,hard 192.168.1.21:/volume1/server-backups /mnt/server-backup 2>> /var/log/blackSERV-backup.log if [ ! -d "/mnt/server-backup/$backupdir" ]; then mkdir /mnt/server-backup/$backupdir echo "$today - Creating new backupdir: $backupdir for this server.." >> /var/log/blackSERV-backup.log fi ################################################################################################ ## Start des System-Backups: echo "$today - Starting with backup for server: $backupdir .." >> /var/log/blackSERV-backup.log mkdir -p /mnt/server-backup/$backupdir/$today/etc rsync -rlptDv --chmod=Du+rwx \ /etc/fstab /etc/crontab \ /mnt/server-backup/$backupdir/$today/etc/ cat ~/.bash_history | grep -v '#' >> /mnt/server-backup/$backupdir/$today/history.txt # Backup Webserver Files & content: if [ -d "/var/www" ]; then mkdir /mnt/server-backup/$backupdir/$today/webfiles rsync -rlptDv --chmod=Du+rwx \ /var/www/ \ /mnt/server-backup/$backupdir/$today/webfiles/ fi # Backup Webserver Configuration: if [ -d "/etc/apache2" ]; then mkdir /mnt/server-backup/$backupdir/$today/etc/apache2 rsync -rlptDv --chmod=Du+rwx \ /etc/apache2/ \ /mnt/server-backup/$backupdir/$today/etc/apache2/ fi if [ -d "/etc/httpd" ]; then mkdir /mnt/server-backup/$backupdir/$today/etc/httpd rsync -rlptDv --chmod=Du+rwx \ /etc/httpd/ \ /mnt/server-backup/$backupdir/$today/etc/httpd/ fi # Backup PLEX spezific Files: #https://support.plex.tv/articles/201154527-move-viewstate-ratings-from-one-install-to-another/ if [ -d "/var/lib/plexmediaserver" ]; then mkdir /mnt/server-backup/$backupdir/$today/PLEX_server_backup cp -a "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db" "/tmp/com.plexapp.plugins.library.db" echo ".dump metadata_item_settings" | sqlite3 /tmp/com.plexapp.plugins.library.db | grep -v TABLE | grep -v INDEX > /mnt/server-backup/$backupdir/$today/PLEX_server_backup/watchedState.sql rsync -rlptDv --chmod=Du+rwx \ "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases/" \ /mnt/server-backup/$backupdir/$today/PLEX_server_backup/Databases/ rsync -lptDv --chmod=Du+rwx \ "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Preferences.xml" \ /mnt/server-backup/$backupdir/$today/PLEX_server_backup/Preferences.xml fi # Backup der Files von /opt: if [ -d "/opt" ]; then mkdir /mnt/server-backup/$backupdir/$today/opt rsync -rlptDv --chmod=Du+rwx --exclude 'eff.org' \ /opt/ \ /mnt/server-backup/$backupdir/$today/opt/ fi #chmod -R 775 /mnt/server-backup/$backupdir/$today/* # Dump database into SQL file #mysqldump --user=$user --password=$password --host=$host $db_name > /mnt/server-backup/$backupdir/$today/$db_name-$today.sql ################################################################################################ ## Löschen von 7 Tage alten Backups: if [ -d "/mnt/server-backup/$backupdir/$OLDBACKUP" ]; then rm -Rf /mnt/server-backup/$backupdir/$OLDBACKUP fi ################################################################################################ ## umount /mnt/server-backup