Both sides previous revision Previous revision Next revision | Previous revision |
skripting-section:bash:server-backup-skript [2018/01/08 13:26] – [Installation] michael | skripting-section:bash:server-backup-skript [2019/04/04 16:18] (current) – michael |
---|
#!/bin/bash | #!/bin/bash |
################################################################################################ | ################################################################################################ |
#******************* Backup Linux Server Script by Michael Reber - v 1.0 **********************# | #******************* Backup Linux Server Script by Michael Reber - v 1.2 **********************# |
################################################################################################ | ################################################################################################ |
| |
################################################################################################ | ################################################################################################ |
| |
## Variable Definition & System Vorbereitungen: | ## Variable Definition & System Vorbereitungen: |
backupdir=`hostname` | backupdir=`hostname` |
## System dependency Check: | ## System dependency Check: |
if [ -n "$(command -v apt-get)" ]; then | 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 | if [ $(dpkg-query -W -f='${Status}' nfs-common 2>/dev/null | grep -c "ok installed") -eq 0 ]; then |
apt-get install nfs-common -y; | apt-get install nfs-common -y; |
fi | fi |
else | else |
if [ $(yum -q list installed nfs-utils &>/dev/null && echo "1" || echo "0") -eq 0 ]; then | if [ $(yum -q list installed nfs-utils &>/dev/null && echo "1" || echo "0") -eq 0 ]; then |
yum install nfs-utils -y; | yum install nfs-utils -y; |
systemctl start rpcbind && systemctl enable rpcbind; | systemctl start rpcbind && systemctl enable rpcbind; |
fi | fi |
fi | fi |
if [ ! -d "/mnt/server-backup" ]; then | if [ ! -d "/mnt/server-backup" ]; then |
mkdir /mnt/server-backup | mkdir /mnt/server-backup |
fi | fi |
################################################################################################ | ################################################################################################ |
| |
if [ ! -d "/mnt/server-backup/$backupdir" ]; then | if [ ! -d "/mnt/server-backup/$backupdir" ]; then |
mkdir /mnt/server-backup/$backupdir | mkdir /mnt/server-backup/$backupdir |
echo "$today - Creating new backupdir: $backupdir for this server.." >> /var/log/blackSERV-backup.log | echo "$today - Creating new backupdir: $backupdir for this server.." >> /var/log/blackSERV-backup.log |
fi | fi |
################################################################################################ | ################################################################################################ |
## Start des System-Backups: | ## Start des System-Backups: |
echo "$today - Starting with backup for server: $backupdir .." >> /var/log/blackSERV-backup.log | echo "$today - Starting with backup for server: $backupdir .." >> /var/log/blackSERV-backup.log |
| |
mkdir -p /mnt/server-backup/$backupdir/$today/etc | mkdir -p /mnt/server-backup/$backupdir/$today/etc |
cp /etc/fstab /mnt/server-backup/$backupdir/$today/etc/ | rsync -rlptDv --chmod=Du+rwx \ |
cp /etc/crontab /mnt/server-backup/$backupdir/$today/etc/ | /etc/fstab /etc/crontab \ |
| /mnt/server-backup/$backupdir/$today/etc/ |
cat ~/.bash_history | grep -v '#' >> /mnt/server-backup/$backupdir/$today/history.txt | cat ~/.bash_history | grep -v '#' >> /mnt/server-backup/$backupdir/$today/history.txt |
| |
# Backup Webserver Content.. | # Backup Webserver Files & content: |
if [ -d "/var/www" ]; then | if [ -d "/var/www" ]; then |
mkdir /mnt/server-backup/$backupdir/$today/webfiles | mkdir /mnt/server-backup/$backupdir/$today/webfiles |
cp -r /var/www/* /mnt/server-backup/$backupdir/$today/webfiles/ | rsync -rlptDv --chmod=Du+rwx \ |
| /var/www/ \ |
| /mnt/server-backup/$backupdir/$today/webfiles/ |
fi | fi |
| |
# Backup Webserver Configuration.. | # Backup Webserver Configuration: |
if [ -d "/etc/apache2" ]; then | if [ -d "/etc/apache2" ]; then |
mkdir /mnt/server-backup/$backupdir/$today/etc/apache2 | mkdir /mnt/server-backup/$backupdir/$today/etc/apache2 |
cp -r /etc/apache2/* /mnt/server-backup/$backupdir/$today/etc/apache2/ | rsync -rlptDv --chmod=Du+rwx \ |
| /etc/apache2/ \ |
| /mnt/server-backup/$backupdir/$today/etc/apache2/ |
fi | fi |
if [ -d "/etc/httpd" ]; then | if [ -d "/etc/httpd" ]; then |
mkdir /mnt/server-backup/$backupdir/$today/etc/httpd | mkdir /mnt/server-backup/$backupdir/$today/etc/httpd |
cp -r /etc/httpd/conf /etc/httpd/conf.d /etc/httpd/conf.modules.d /mnt/server-backup/$backupdir/$today/etc/httpd/ | rsync -rlptDv --chmod=Du+rwx \ |
| /etc/httpd/ \ |
| /mnt/server-backup/$backupdir/$today/etc/httpd/ |
fi | 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 /opt Verzeichnis | # Backup der Files von /opt: |
if [ -d "/opt" ]; then | if [ -d "/opt" ]; then |
mkdir /mnt/server-backup/$backupdir/$today/opt | mkdir /mnt/server-backup/$backupdir/$today/opt |
cp -r /opt/* /mnt/server-backup/$backupdir/$today/opt/ | rsync -rlptDv --chmod=Du+rwx --exclude 'eff.org' \ |
| /opt/ \ |
| /mnt/server-backup/$backupdir/$today/opt/ |
fi | fi |
| |
| #chmod -R 775 /mnt/server-backup/$backupdir/$today/* |
# Dump database into SQL file | # Dump database into SQL file |
#mysqldump --user=$user --password=$password --host=$host $db_name > /mnt/server-backup/$backupdir/$today/$db_name-$today.sql | #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: | ## Löschen von 7 Tage alten Backups: |
if [ -d "/mnt/server-backup/$backupdir/$OLDBACKUP" ]; then | if [ -d "/mnt/server-backup/$backupdir/$OLDBACKUP" ]; then |
rm -fR /mnt/server-backup/$backupdir/$OLDBACKUP | rm -Rf /mnt/server-backup/$backupdir/$OLDBACKUP |
fi | fi |
################################################################################################ | ################################################################################################ |