Bash SSH Zugriff, Befehle senden

C

cdn123

Grünschnabel
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
 
Hallo,

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

mfg
HeadCrash
 
:) 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?
 
Ö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?
 
...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?
 
Zuletzt bearbeitet:
Hmm keiner eine Idee? ich zermater mir gerade den Kopf darüber :)
 
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


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"
 
Die Grundsatzfrage: Warum überlässt du nicht rsync das Löschen, wenn du ohnehin nur eine Backupgeneration willst?
 
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.
 
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
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

rsnapshot und ein Rechteproblem?

Windows clients können nicht mehr auf lange laufendes System zugreifen

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

[HowTo] TeamSpeak 2 - RC2 - Server (Deutsch/Englisch)

Zurück
Oben