ubuntuusers.de

rsync ssh Skript optimieren

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

san04

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1264

Hallo zusammen,

da Ubuntu One ja leider in Kürze den Service einstellt wollte ich mich mal an einem kleinen Backup-Skript per SSH versuchen. Grundlage war die Minimal Variante im Wiki: Skripte/Backup mit RSYNC, bei der ich lediglich SSH einbauen wollte... (Habe leider keine Erfahrung mit Bash-Skripten, wie man am Code wohl unschwer erkennt 😉)

SSH-Login funktioniert über Public-key Authentifizierung.

Ich habe dem rsync Befehl ssh hinzugefügt und einen zweiten SSH-Aufruf für den ln Befehl (dieser funktioniert so leider nicht). Auf dem Server liegt nach dem zweiten Backup die doppelte Datenmenge, obwohl ich nur ein kleines Textdokument verändert habe.

Außerdem liegt mein home-Ordner auf dem Server unter einem längeren Pfad. Das lässt sich bestimmt auch noch schöner machen.

1
ssh ich@der.server.de:/hier/liegt/mein/homeordner/backup

funktioniert leider nicht, vermutlich weil ssh die Ordnerstruktur auf dem Server vor dem Login noch nicht kennt? (Name or service not known) Nach dem Login lande ich scheinbar automatisch im Ordner /hier/liegt/mein/homeordner/ und gehe dann manuell nach Backup.

Noch eine Kleinigkeit: Die Daten werden dann im Backup-Ordner nochmals unter dem gesamten Pfad abgelegt:

der.server.de:/hier/liegt/mein/homeordner/backup/Datum/home/ich/zu/sichernder/Ordner/ mir würde

der.server.de:/hier/liegt/mein/homeordner/backup/Datum/zu/sichernder/Ordner/ reichen.

Gibt es dafür eine einfache Lösung?

Vielen Dank schon einmal, hier noch mein Code-Schnipsel

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/sh

quelle=~/zu/sichernder/Ordner/
ziel=ich@der.server.de:/hier/liegt/mein/homeordner/Backup/
server=ich@der.server.de
heute=$(date +%Y-%m-%d)

rsync -avzRe ssh "${quelle}"  "${ziel}${heute}/" --link-dest="${ziel}last/"
ssh "${server}" -t "cd Backup ; ln -nsf "${heute}" "last""

exit 0

u1000

Anmeldungsdatum:
2. Oktober 2011

Beiträge: 1850

san04 schrieb:

Noch eine Kleinigkeit: Die Daten werden dann im Backup-Ordner nochmals unter dem gesamten Pfad abgelegt:

Das ist normal. Es könnte ja noch der Pfad /home/sie oder /etc/irgendwas hinzukommen. Daher ist der Pfad "absolut" um das zu unterscheiden. P.S.: das "home/ich" kommt aus der "~" in deinem "quelle" Pfad.

Zu deinem Problem:

ssh "${server}" -t "cd Backup ; ln -nsf "${heute}" "last""

Das Konstrukt mit dem -t und dem cd Backup funktioniert so nicht. Gebe stattdessen dem ln absolute komplette Pfade an:

Definiere in deinem Script den Pfad auf dem Zielserver separat:

...
ziel_pfad=/hier/liegt/mein/homeordner/Backup/
ziel=ich@der.server.de:${ziel-pfad}
...

Und dann sollte der ln in etwa so funktionieren:

ssh "${server}" ln -nsf "${ziel-pfad}${heute}" "${ziel-pfad}last"

Und zum Debuggen, was auf dem Server passieren würde:

ssh "${server}" echo ln -nsf "${ziel-pfad}${heute}" "${ziel-pfad}last"

Viele Grüße u1000

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1264

Vielen Dank, das funktioniert schon mal!

Habe probehalber mal eine 100MB Datei abgeglichen, die schon vorhanden war. Dabei wurde wohl nur der Hardlink angelegt. Wenn ich einen Rechtsklick auf den Backup-Ordner mache zeigt der immer noch die doppelte Größe (also die von zwei identischen Backups) an, vermutlich einfach die Summe aller Dateigrößen der vorhandenen Hardlinks?

Wo kann ich denn jetzt sehen, dass ich tatsächlich Speicherplatz spare?

u1000

Anmeldungsdatum:
2. Oktober 2011

Beiträge: 1850

san04 schrieb:

Wo kann ich denn jetzt sehen, dass ich tatsächlich Speicherplatz spare?

Mit df -h siehst du wieviel auf der Platte belegt ist. Wie der Befehl du die Hardlinks zählt weiss ich nicht. Ob aber überhaut korrekt Hardlinks angeleget werden kannst du auf dem Server prüfen:

> ls -l
-rw-rw-r-- 2 ich ich    0 Apr 20 19:19 1.txt
-rw-rw-r-- 2 ich ich    0 Apr 20 19:19 2.txt

1.txt ist ein Hardlink auf 2.txt, der markierte "Zähler" zeigt daher 2 an.

Vielen Dank, das funktioniert schon mal!

Dann bitte gelöst anklicken ☺

Viele Grüße u1000

Antworten |