Hallo,
ich mache das am Raspi4 wie folgt:
1x täglich wird ein Script vom Scheduler gestartet, welches die Daten in ein temporäres Verzeichnis kopiert und die Daten
zippt (1x nur die Daten und 1x eine Komplettsicherung).
Diese ZIPs werden dann auf den Fileserver (NAS) verschoben.
Die Komplettsicherung wird täglich überschrieben, die Daten werden archiviert und mit einem Zeitstempel versehen.
Script-Datei anlegen mit:
sudo nano /home/pi/backup_ip_symcon.sh
Inhalt der Datei:
#!/bin/bash
SEPARATOR1="================================================"
SEPARATOR2="------------------------------------------------"
function _________Separator {
echo $SEPARATOR1
echo " "
echo $1
echo $SEPARATOR2
}
_________Separator "Backup Server - create Directories"
TempBackupDir="/tmp/IPSymconBackup"
# Verzeichnisinfo:
# /usr/bin/symcon --> $TempBackupDir/usr_bin - Executable
# /usr/share/symcon/ --> $TempBackupDir/usr_share - Static Data (IP-Symcon Installation)
# /var/lib/symcon/ --> $TempBackupDir/var_lib - Variable Data (Settings, Skripte, Medien...)
# /var/log/symcon/ --> $TempBackupDir/var_log - Log Files (Logfiles...)
TempBackupDir_usr_bin="${TempBackupDir}/usr_bin/"
TempBackupDir_usr_share="${TempBackupDir}/usr_share/"
TempBackupDir_var_lib="${TempBackupDir}/var_lib/"
TempBackupDir_var_log="${TempBackupDir}/var_log/"
#create Directories (-p --> ignore existing Directories)
mkdir -p "$TempBackupDir"
mkdir -p "$TempBackupDir_usr_bin"
mkdir -p "$TempBackupDir_usr_share"
mkdir -p "$TempBackupDir_var_lib"
mkdir -p "$TempBackupDir_var_log"
_________Separator "Backup Server - STOP PLS Server"
sudo /etc/init.d/symcon stop
_________Separator "Backup Server - Backup Data to Temp Folder"
#Die wichtigsten Schalter von rsync
#Schalter Funktion
#-a Archive-Modus, äquivalent zu -rlptgoD
#-r rekursiv, alle Unterverzeichnisse
#-l kopiert symbolische Links als symbolische Links und nicht als Datei
#-p bewahrt die Berechtigungen der Dateien
#-t bewahrt die Zeitstempel der Dateien
#-g bewahrt die Gruppenberechtigungen der Dateien
#-o bewahrt den Besitzer der Datei (nur root)
#-D bewahrt Devices
#-v mehr Ausgabetext auf dem Bildschirm
#-q weniger Ausgabetext auf dem Bildschirm
#-u nur Updates; überschreibt keine neueren Dateien
#-W kopiert die gesamte Datei, nicht nur das Delta
#-n Trockenlauf, zeigt nur an, was gemacht werden würde
#--delete alle Dateien, die im Ziel, aber nicht in der Quelle vorhanden sind, werden gelöscht
#--checksum Checksumme statt Timestamps verwenden
#--stats Statistik ausgeben
#--ignore-times Checksum statt timestamp verwenden
#--progress Vorgangsdaten anzeigen
rsyncopt="-a --delete --checksum --ignore-times -v"
_________Separator $TempBackupDir_usr_bin
sudo rsync $rsyncopt "/usr/bin/symcon" $TempBackupDir_usr_bin
_________Separator $TempBackupDir_usr_share
sudo rsync $rsyncopt "/usr/share/symcon/" $TempBackupDir_usr_share
_________Separator $TempBackupDir_var_lib
sudo rsync $rsyncopt "/var/lib/symcon/" $TempBackupDir_var_lib
_________Separator $TempBackupDir_var_log
sudo rsync $rsyncopt "/var/log/symcon/" $TempBackupDir_var_log
_________Separator "Backup Server - START PLS Server"
sudo /etc/init.d/symcon start
_________Separator "Backup Server - ZIP Data"
cd $TempBackupDir
now=`date +%Y_%m_%d__%H_%M_%S`
backupfile="PS_Symcon_Backup_All.zip"
backupfile2="PS_Symcon_Backup_Data_${now}.zip"
#zipoptionen:
# -r rekursiv
# -9 besser komprimieren
# -q quiet
# -v mehr output
zipoptions="-r -9 -q"
_________Separator "ZIP ALL"
sudo zip $zipoptions "./$backupfile" *
_________Separator "ZIP DATA ONLY"
cd "$TempBackupDir_var_lib"
sudo zip $zipoptions "../$backupfile2" *
cd $TempBackupDir
_________Separator "Backup Server - Fileserver Backup Laufwerk mounten"
MountDir="/home/pi/BACKUP_SYMCON"
sudo mkdir -p "${MountDir}"
sudo setfacl -R -m u:pi:rwx "${MountDir}"
sudo mount -t cifs -o username=pi,password=mypassword "//Fileserver/Freigabe" "${MountDir}"
_________Separator "Backup Server - move zip to Server"
echo "${backupfile}"
echo "${backupfile2}"
# --force --> overwrite
sudo mv --force "./${backupfile}" "${MountDir}/${backupfile}"
sudo mv --force "./${backupfile2}" "${MountDir}/${backupfile2}"
_________Separator "Backup Server - unmount Fileserver Backup Laufwerk"
sudo umount "$MountDir"
Script ausführbar machen:
sudo chmod +x /home/pi/backup_ip_symcon.sh
in Scheduler eintragen (startzeit: 6:16):
sudo crontab -u pi -e
Inhalt der Datei: (bei eingerichtetem E-Mailserver (z.B. EXIM4) wird das Ausgabe-Log an die Benachrichtigungsadresse versandt)
MAILTO="yourEmail@yourServer"
16 6 * * * /bin/bash /home/pi/backup_ip_symcon.sh
Das Ergebnis schaut dann so aus:
lg
Wolfgang
