home-harmening:sicherheit:backup:rclone:rclone_backup_skript

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
home-harmening:sicherheit:backup:rclone:rclone_backup_skript [2024/10/14 08:39] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1home-harmening:sicherheit:backup:rclone:rclone_backup_skript [2024/10/14 09:40] (aktuell) charmening
Zeile 1: Zeile 1:
 +====== Rclone backup Skript ======
 +Hier ein kleines Skript, welches von mir verwendet wird um automatisch Backups von Dateien und Ordner mittels rsync auf einen Cloud Speicher zu sichern.
 +  - Kopiere das Skript nach /usr/local/bin/rclone-backup
 +  - Wieviel alte Backups möchtest du behalten? Konfiguriere die KEEP Variable im Skript.
 +  - Den Remote Pfad der genutzt werden soll mit der Variable REMOTE einstellen.
 +  - Erstelle einen Cronjob und entscheide wie oft ein backup erstellt werden soll.
 +\\
 +**__Bedienung:__**
 +\\
 +{{ :home-harmening:sicherheit:backup:rclone:rclone-backup.png?400|}}
 +Aufruf mit ./rclone-backup "WIEVIELE BEHALTEN?" "WAS SOLL GESICHERT WERDEN?"
 +<code>rclone-backupe 6 /home/user1</code>
 +  - Es wird die Datei /tmp/241014-102736-user1.tar.gz erstellt.
 +  - Danach wird wird nach user1 Dateien auf der Cloud gesucht und nur die 3 aktuellsten werden behalten.
 +  - Jetzt wird die Datei /tmp/241014-102736-user1.tar.gz auf die Cloud kopiert.
 +\\ \\ 
 +Es sollte hierfür ein Cronjob erstellt werden.
 +\\
 +**__Beispiel:__**
 +<code>* * * */3 root /usr/local/rclone-backup /home/user1</code>
 +\\ \\ 
 +==== Skript ====
 +<code>
 +#
 +# Benutzung mit ./rclone-backup "Was soll gesichert werden"
  
 +# Variablen
 +#Wieveiele Backups werden behalten
 +KEEP=$1
 +# Remote Pfad von Rclone
 +REMOTE=gdrive:/rclone/
 +# Wovon das Backup erstellen
 +BACKUPFROM=$2
 +
 +# Wurde die KEEP Variable gesetzt? Wenn nicht setze den Default
 +if [ -z $KEEP ]; then KEEP=3; fi
 +# Wurde ein Backuppfad übergeben?
 +if [ -z $BACKUPFROM ]; then echo "Was soll gesichert werden? Aufruf mit ./rclone-backup 'Wieviel wird behalten?' 'Was wird gesichert?'" ; exit 1 ; fi
 +
 +# Wichtige Variable erstéllen
 +DATE=$(date +%Y%m%d-%H%M%S)
 +NEWBACKUP=$(basename $BACKUPFROM)-$DATE.tar.gz
 +RED='\033[0;31m'
 +GREEN='\033[0;32m'
 +YELLOW='\033[1;33m'
 +NC='\033[0m'
 +
 +# Lokale Sicherung erstellen
 +if [ -f /tmp/$NEWBACKUP ]; then rm /tmp/$NEWBACKUP; fi
 +tar cfz /tmp/$NEWBACKUP $BACKUPFROM 2> /dev/null
 +
 +# Remote Backups auslesen
 +# Liste der Backups die bleiben
 +KEEPLIST=$(rclone ls $REMOTE | grep $(basename $BACKUPFROM) | awk '{print $2}' | sort | tail -n $KEEP)
 +# Liste aller Backups auf Remote
 +REMOTELIST=$(rclone ls $REMOTE | grep $(basename $BACKUPFROM) | awk '{print $2}' | sort )
 +
 +# Prüfung ob backup gelöscht werden kann. Wenn das Backup nicht in der KEEPLIST steht, dann lösche dieses
 +for BACKUP in $REMOTELIST ; do
 +  if echo "$KEEPLIST" | grep "$BACKUP" &> /dev/null ;
 +  then continue
 +  else
 +    printf "${RED}" ; rclone deletefile $REMOTE$BACKUP -v ; printf "$NC"
 +  fi
 +done
 +
 +printf "${GREEN}"
 +# Neues Backup hochladen
 +if rclone copy /tmp/$NEWBACKUP $REMOTE -v ; then
 +  logger "Rclone Backup $BACKUPFROM to $REMOTE successfull"
 +  printf "${YELLOW}Rclone Backup $BACKUPFROM to $REMOTE successfull${NC}\n"
 +fi
 +printf "${NC}"
 +rm /tmp/$NEWBACKUP
 +</code>