====== 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?" rclone-backupe 6 /home/user1 - 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:__** * * * */3 root /usr/local/rclone-backup /home/user1 \\ \\ ==== Skript ==== # # 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