home-harmening:sicherheit:backup:rclone:rclone_backup_skript

Dies ist eine alte Version des Dokuments!


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.

  1. Kopiere das Skript nach /usr/local/bin/rclone-backup
  2. Wieviel alte Backups möchtest du behalten? Konfiguriere die KEEP Variable im Skript.
  3. Den Remote Pfad der genutzt werden soll mit der Variable REMOTE einstellen.
  4. Erstelle einen Cronjob und entscheide wie oft ein backup erstellt werden soll.


Bedienung:
Aufruf mit ./rclone-backup „WIEVIELE BEHALTEN?“ „WAS SOLL GESICHERT WERDEN?“

rclone-backupe 6 /home/user1
  1. Es wird die Datei /tmp/241014-102736-user1.tar.gz erstellt.
  2. Danach wird wird nach user1 Dateien auf der Cloud gesucht und nur die 3 aktuellsten werden behalten.
  3. Jetzt wird die Datei /tmp/241014-102736-user1.tar.gz auf die Cloud kopiert.



Es sollte hierfür ein Cronjob erstellt werden.
Beispiel:

* * * */3 root /usr/local/rclone-backup /home/user1



#
# 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=$DATE-$(basename $BACKUPFROM).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