Bash Backupsscript mit Konfigurationsdatei

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe Gemeinde,

    ich übe mich gerade in der Erstellung von bash und das Einbinden von Konfigurationsdateien und verzweifle ein wenig daran. Mein Ziel ist es ein Backupscript mit Rsync zu erstellen, der über eine Konfigurationsdatei unter /etc/ba.conf konfiguriert werden kann.

    Darin soll dann Quelle, Ziel, Menge an Backups und Zeitpunkt, ab welchen Tag das älteste Backup gelöscht werden soll, definiert werden.

    Das heißt, meine .conf Datei beinhalte folgende Parameter:

    Quelle=/var/www/
    Ziel=/home/pi/HDD/HDD03/
    #Aufbewahrung=7 #Alles was älter als 7 ist soll gelöscht werden
    #SSHPORT= 22
    #SSHUSER= sshuser
    #FROMSSH= piproduktiv
    #TOSSH= pibackupserver

    Im Moment will ich erst mal Quelle und Ziel zum Laufen bringen. Wenn ich jetzt meinen Rsync so in die Konsole pushe "rsync -av --delete /var/www/ /home/pi/HDD/HDD03/" dann funktioniert das ohne Probleme. Wenn ich den bash jedoch über bash /pfad/zu/meinem/backupscript.sh ausführe, wirft mir die Konsole Fehler

    HDD01 existiert tatsächlich, wird aber von mir nicht angesprochen. In der .sh Datei steht folgendes:

    Code
    #!/usr/bin/bash
    
    
    SOURCES=(/etc /ba.conf )
    
    
    rsync -av --delete echo /"$Quelle"/ echo /"$Ziel"/

    Ist die Syntax falsch oder wird mein Vorhaben von rsync nicht unterstützt?

    Einmal editiert, zuletzt von Minusbrain (26. Januar 2016 um 16:08)

  • Code
    #!/usr/bin/bash
    
    
    SOURCES=(/etc /ba.conf )

    Du hast da ein Leerzeichen zwischen /etc und /ba.conf ... das wird so nix. Es müsste /etc/ba.conf lauten.

    SOURCES=(/etc/ba.conf) ist aber auch die falsche Anwendung. Du hast 2 Möglichkeiten:

    1.:

    Code
    . /etc/ba.conf
    
    
    echo $Quelle

    das Leerzeichen zwischen . und /etc/ba.conf ist wichtig


    2.:

    Code
    source /etc/ba.conf
    
    
    echo $Quelle
    Code
    rsync -av --delete echo /"$Quelle"/ echo /"$Ziel"/

    Das wird so nichts. "echo" ist kein Bestandteil vom rsync Befehl bzw kennt dieser nicht als Parameter. Die echos müssten also wenn dann mit ; abgetrennt oder in eine neue Zeile gesetzt werden.

    Code
    #entweder
    rsync -av --delete ; echo /"$Quelle"/ ; echo /"$Ziel"/
    #oder
    rsync -av --delete
    echo /"$Quelle"/
    echo /"$Ziel"/

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!