Bash SSH Zugriff, Befehle senden

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von cdn123, 14.12.2011.

  1. cdn123

    cdn123 Grünschnabel

    Dabei seit:
    14.12.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo zusammen :)

    Wie der Titel schon andeutet versuche ich folgendes, möchte gerne in meinem Shellscript eine SSH Verbindung zu einem anderen Server aufbauen und dann dort einen Befehl ausführen. Leider klappt es bis jetzt nicht so wie ich es mir erhofft habe:

    Code:
    ssh -p 999 -l user1 IP "for dir in $(find /home/backup/daily/ -atime +1 -type d); do rm -rfv $dir; done"
    ...sollten also alle Ordner die älter als 1 Tag sind gelöscht werden.

    Gerne würde ich vorher noch den Befehl:
    Code:
    touch /home/backup/daily
    auf dem anderen Server via SSH ausführen.

    Viele Grüße

    cdn
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 HeadCrash, 14.12.2011
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Hallo,

    warum legst du das ganze nicht einfach direkt als Skript auf dem anderen Server ab? :think:

    mfg
    HeadCrash
     
  4. cdn123

    cdn123 Grünschnabel

    Dabei seit:
    14.12.2011
    Beiträge:
    6
    Zustimmungen:
    0
    :) auf die Idee bin ich auch vor 2 Minuten gekommen.

    Nur da kommt jetzt ein nues Problem auf mich zu:

    Code:
    touch /home/backup/daily/backup_`date +'%Y-%m-%d__%H%M%S'`
    
    Das Funktioniert ja leider nicht. Wie könnte ich es denn stattdessen lösen, sodass der Touch befehl nur auf dem gerade erstellten Ordner ausgeführt wird?
     
  5. #4 HeadCrash, 14.12.2011
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Öhm, hier steh ich grade auf dem Schlauch, was genau willst du tun?
    Der grade erstellte Ornder hat eh nen aktuellen Zeitstempel wieso hier also nochmal Touch bemühen?
     
  6. #5 cdn123, 14.12.2011
    Zuletzt bearbeitet: 14.12.2011
    cdn123

    cdn123 Grünschnabel

    Dabei seit:
    14.12.2011
    Beiträge:
    6
    Zustimmungen:
    0
    ...also zum vorgehen:

    Möchte eigentlich nur via rsync Server1 auf Server 2 "backupen". Ich dachte mir, dass die Dateien im Backup-Folder dann noch den originalen Zeitstempel haben. [EDIT: Und ja genau so ist es auch. Sie werden dann ebenfalls gelöscht da sie >1d sind]

    Leider funktioniert der Befehl so auch nicht. Habe dann mal ein bisschen hier im Forum gesucht und etwas anderes gefunden was eig. auch klappen sollte. Leider wird dabei der Oberordner auch mit gelöscht -.-


    Code:
    find $path -mtime +1 -type d -exec rm -rf {} ';'
    


    Eigentlich soll nur der Backupordner der gestern erstellt wurden ist gelöscht werden.

    Habs jetzt so gelöst:
    Code:
    touch /home/backup/daily
    
    for i in `find /home/backup/daily  -type d -mtime +1 -print`; do echo -e "Deleting directory $i";rm -rf $i; done
    

    Nur dazwischen fehlt mir jetzt noch der touch Befehl für den neu angelegt Ordner des Backups. Weiß zufällig jemand wie ich diesen am besten ausführe?
     
  7. cdn123

    cdn123 Grünschnabel

    Dabei seit:
    14.12.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Hmm keiner eine Idee? ich zermater mir gerade den Kopf darüber :)
     
  8. #7 allesmueller, 14.12.2011
    allesmueller

    allesmueller Eroberer

    Dabei seit:
    05.07.2005
    Beiträge:
    69
    Zustimmungen:
    0

    ich denke das Thema ist quoting, d.h. "\" vor dem $ damit die Variable bzw. der Ausdruck nicht lokal sondern remote ausgewertet wird
    alternativ sollte es auch klappen, wenn du " durch ' ersetzt

    Code:
    ssh -p 999 -l user1 IP "touch /home/backup/daily; for dir in \$(find /home/backup/daily/ -atime +1 -type d); do rm -rfv \$dir; done"
     
  9. #8 allesmueller, 15.12.2011
    allesmueller

    allesmueller Eroberer

    Dabei seit:
    05.07.2005
    Beiträge:
    69
    Zustimmungen:
    0
    Die Grundsatzfrage: Warum überlässt du nicht rsync das Löschen, wenn du ohnehin nur eine Backupgeneration willst?
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. cdn123

    cdn123 Grünschnabel

    Dabei seit:
    14.12.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Hmm wie lasse ich denn rsync die letzte Backup Generation löschen? Dazu habe ich noch nichts gefunden.

    Auf der anderen Seite bräuchte ich nur noch eine Möglichkeit den gerade erstellten (Mit uhrzeitversehendem)Ordner von rsync zu touchen.
     
  12. #10 allesmueller, 15.12.2011
    allesmueller

    allesmueller Eroberer

    Dabei seit:
    05.07.2005
    Beiträge:
    69
    Zustimmungen:
    0
    ok, wenn du ein neues Verzeichnis haben willst wird es schwieriger :)
    aber wenn du das gleiche Verzeichnis nimmst geht es so z.B.:
    (hier nur lokal getestet, ginge aber auch remote)
    Code:
    mkdir origdir 
    touch origdir/{a,b,c,d,e}
    rsync -aH --delete -v origdir backupdir
    ls -l backupdir/origdir/
    rm origdir/a
    rsync -aH --delete -v origdir backupdir
    ls -l backupdir/origdir/
    history 
    
    aber du könntest z.B. remote den Wochentag als Verzeichnis nehmen (wenn der Platz das erlaubt),
    dann hättest du auch mehrere Generationen was sowieso gut wäre.

    Noch besser: Backuplösung nicht selbst erfinden :D
     
Thema:

Bash SSH Zugriff, Befehle senden

Die Seite wird geladen...

Bash SSH Zugriff, Befehle senden - Ähnliche Themen

  1. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  2. Bashscript aus Debian6 läuft nicht auf Debian7

    Bashscript aus Debian6 läuft nicht auf Debian7: Hallo an alle, nachdem ich ein Skript von squeeze auf wheezy kopiert habe und ausführte, erschienen gleich wilde Fehlermeldungen, nach denen ich...
  3. Bash sucht neues Logo

    Bash sucht neues Logo: Die GNU Bourne Again Shell (bash) sucht nach knapp 20 Jahren ein neues, individuelles Logo. Alle Anwender und Interessenten sind deshalb...
  4. Mit bash Skript bestimmte Werte aus Tabelle lesen

    Mit bash Skript bestimmte Werte aus Tabelle lesen: Hallo! Ich beschäftige mich erst seit Kurzem mit bash und bin deshalb noch nicht so fit darin. Und nun habe ich schon ein kleines Problem und...
  5. Bash: Geteiltes Fenster mit unterschiedlichen Funktionen

    Bash: Geteiltes Fenster mit unterschiedlichen Funktionen: Hallo Leute, ist es in Bash möglich, zwei Funktionen in zwei getrennten Teilen eines Terminalfensters ablaufen zu lassen? Da Bash die Befehle...