Ankündigung

Einklappen
Keine Ankündigung bisher.

Cronjob für Backup optimieren

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Cronjob für Backup optimieren

    Hallo liebe Community,

    ich selbst habe es nicht so mit Cronjobs schreiben. Ich habe einen vServer, sowie den Backupspace von Hetzner. Als UI verwende ich i-MSCP (OpenSource) welches bereits tägliche Backups erstellt und diese in einen Backupordner auf dem jeweiligen Kunden-FTP speichert.

    Ich habe jetzt hier einen Cronjob geschrieben, welches sich diese Dateien kopiert und diese auf dem Backupspace einfügt (als 2. Sicherung). Der Cronjob funktioniert auch soweit Problemlos. Ich hätte nur jetzt gerne ein paar Optimierungen. Diese wären:

    - Ordnererstellung sollte falls es geht dynamisch erfolgen (Abfrage ob der Zielordner bereits existiert)
    - Daily-Backups älter als 14 Tage löschen
    - Weekly-Backups älter als 4 Wochen löschen
    - Monthly-Backups älter als 3 Monate löschen

    Evtl. gibt es auch noch kurzschreibweisen in meinem Cronjob. Bin für alles offen.

    Hier der Quelltext:
    Code:
    #!/bin/sh
    bucket="xxxxxxx"
    
    checks="0"
    if [ $# -lt 3 ] ; then
    	checks="1"
    else
    	if [ $1 != "backup" ] && [ $1 != "restore" ] ; then
    		checks="1"
    	fi
    
    	if [ $2 != "daily" ] && [ $2 != "weekly" ] && [ $2 != "monthly" ] ; then
            	checks="1"
    	fi
    fi
    
    if [ $checks != "0" ] ; then
    	echo '#'
    	echo '# Usage ./clone-backup.sh backup|restore daily|weekly|monthly domain.tld|all'
    	echo '#'
    	exit 0
    fi
    
    if [ $# -gt 3 ] ; then
    	bucket=$4
    fi
    
    if [ $3 = "all" ] ; then
    	cd /var/www/virtual
    	for dir in *; do
            if [ -d $dir ] ; then
    			if [ $1 = "backup" ] ; then
    				echo mkdir $dir | sftp $bucket@$bucket.your-backup.de
    				echo mkdir $dir/$2 | sftp $bucket@$bucket.your-backup.de
    				echo "Syncing customer $dir to $bucket@$bucket.your-backup.de:$dir/$2/"
    				scp -r $dir/backups/ $bucket@$bucket.your-backup.de:$dir/$2/
    			else
    				echo "Syncing $bucket@$bucket.your-backup.de:$dir/$2/ to customer $dir"
    				scp -r $bucket@$bucket.your-backup.de:$dir/$2/ $dir/backups/
    			fi
    	    fi
    	done
    	cd /
    else
    	cd /var/www/virtual/
    	if [ -d $3 ] ; then
    		if [ $1 = "backup" ] ; then
    			echo mkdir $3 | sftp $bucket@$bucket.your-backup.de
    			echo mkdir $3/$2 | sftp $bucket@$bucket.your-backup.de
    			echo "Syncing customer $3 to $bucket@$bucket.your-backup.de:$2/$3/"
    			scp -r $3/backups/ $bucket@$bucket.your-backup.de:$3/$2/
    		else
    			echo "Syncing $bucket@$bucket.your-backup.de:$2/$3/ to customer $3"
    			scp -r $bucket@$bucket.your-backup.de:$3/$2/ $3/backups/
    		fi
    	else
    		echo "Customer $3 not found"
    	fi
        cd /
    fi
Lädt...
X