[gelöst] rsync incremental funktioniert nicht über ssh

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
joe2017
Beiträge: 1134
Registriert: 07.08.2017 14:29:51

[gelöst] rsync incremental funktioniert nicht über ssh

Beitrag von joe2017 » 09.09.2020 11:46:18

Hallo zusammen,

ich bin mir nicht sicher, ob ich etwas falsch mache. Jedoch funktioniert mein incremental rsync über ssh nicht.
Anbei mein Script:

Code: Alles auswählen

SERVERIP=x.x.x.x
SERVER=server.domain
SSHUSR=admin
SSHCRT=/home/admin/.ssh/id_ecdsa

MYDATE=$(date +%Y-%m-%d)
MYDATEFULL=$(date +%V)
MYDATEINCR=$(date +%W)
MYDATEDAY=$(date +%a)

FULL="BackupFull"
INCR="BackupIncr"

SOURCE=/path/to/source/folder
TARGET=/path/to/destination/folder/${SERVER}

if [[ $MYDATEDAY = "Sa" ]]; then
	if [ ! -d "$TARGET" ]; then
		sudo mkdir -p "$TARGET"
	fi
	sudo rsync -avre "ssh -i $SSHCRT" ${SSHUSR}@${SERVERIP}:"${SOURCE}" "${TARGET}/KW-${MYDATEFULL}_${FULL}"
	else
	if [ ! -d "$TARGET" ]; then 
		sudo mkdir -p "$TARGET"
		sudo rsync -avre "ssh -i $SSHCRT" ${SSHUSR}@${SERVERIP}:"${SOURCE}" "${TARGET}/KW-${MYDATEFULL}_${FULL}"
	else
	sudo rsync -avre "ssh -i $SSHCRT" --link-dest="${TARGET}/KW-${MYDATEFULL}_${FULL}" ${SSHUSR}@${SERVERIP}:"${SOURCE}" "${TARGET}/KW-${MYDATEFULL}_${INCR}_${MYDATE}"
	fi
fi
Wenn ich ein Lokales Backup durchführe funktioniert das mit dem --link-dest.
Wenn ich das Backup von meinem externen Fileserver über ssh hole funktioniert das nicht?

Sieht vielleicht jemand was ich falsch mache? Vielleicht ist es ja nur eine Kleinigkeit die ich übersehen habe.
Zuletzt geändert von joe2017 am 10.09.2020 12:51:18, insgesamt 1-mal geändert.

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: rsync incremental funktioniert nicht über ssh

Beitrag von mludwig » 09.09.2020 12:09:58

Wenn ich das richtig lese, ist Ziel des Links für incrementelleBackups
"${TARGET}/KW-${MYDATEFULL}_${FULL}"

wobei MYDATEFULL lediglich die Wochennummer ist, und bei meinem Date fängt die Woche Montag an. Ein Fullbackup wird aber erst Samstag erstellt, richtig? Demnach gibt es das Zielverzeichnis Mo-Fr. nicht?

Benutzeravatar
joe2017
Beiträge: 1134
Registriert: 07.08.2017 14:29:51

Re: rsync incremental funktioniert nicht über ssh

Beitrag von joe2017 » 09.09.2020 12:39:01

Das ist teilweise richtig. Mein Plan ist folgender.

Am Samstag wird immer ein neuer Order KW-xx_BackupFull angelegt. Ist die Backupplatte voll und muss unter der Woche getauscht werden, muss natürlich wieder ein neuer Ordner KW-xx_BackupFull angelegt werden. Diesen Ordner möchte ich zur überprüfung --link-dest verwenden um anschließend inkementelle Backups KW-xx_BackupInc_2020-09-09 zu erzeugen.

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: rsync incremental funktioniert nicht über ssh

Beitrag von mludwig » 09.09.2020 12:53:01

schon richtig, aber Samstag läuft FullBackup mit z. B. server.name/KW-39_FullBackup" , und am darauf folgenden Montag läuft das Skript erneut - also ist die Variable Wochennummer eins weiter. Damit verweist dein Skript per --linkdest auf ein nicht vorhandenes Vollbackup-Verzeichnis, denn dann ist KW 40

Prüfe also besser, ob es nicht nur $TARGET gibt, sondern das komplette Vollbackup-Verzeichnis ...

Benutzeravatar
joe2017
Beiträge: 1134
Registriert: 07.08.2017 14:29:51

Re: rsync incremental funktioniert nicht über ssh

Beitrag von joe2017 » 09.09.2020 12:58:35

Ach jetzt weiß ich was du meinst. Das werde ich gleich noch mal prüfen.

Aber selbst wenn ich den Test innerhalb der Woche durchführe, werden keine Links erstellt, sondern ein volles Backup.
Oder aber ich hab das jetzt komplett falsch eingeschätzt und es sind tatsächlich Links. Aber meine Festplatte wird immer voller, daher kann es sich icht um Links handeln.
Hast du zufällig den Befehl zum prüfen der Links im Kopf? Ansonsten muss ich da selbst noch mal nachschauen. Normalerweise werden Systemlinks mit ls -l mit angezeigt. Bei den Backups Files sehe ich nicht das es sich um einen Link handelt.

Benutzeravatar
joe2017
Beiträge: 1134
Registriert: 07.08.2017 14:29:51

Re: rsync incremental funktioniert nicht über ssh

Beitrag von joe2017 » 09.09.2020 13:14:33

Ein ganz anderer Ansatz...
Kann man mit RSYNC nicht einfach nur Dateien kopieren welche ein Erstellungs oder Änderungsdatum von heute haben?
Das wäre eigentlich am einfachsten.

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: rsync incremental funktioniert nicht über ssh

Beitrag von mludwig » 09.09.2020 13:38:06

Soweit ich weiss erstellt aber rsync keine symbolischen Links, sondern hard links, falls sich die Datei nicht geändert hat. Mit ls -l sieht man den "reference count" der inode, was bei Dateien mit Hard-links dann entsprechend > 1 sein sollte.

Code: Alles auswählen

martin@mlu-yoga:~$ ls -l links.txt
-rw-r--r-- 1 martin root 406 Jan 17  2020 links.txt
martin@mlu-yoga:~$ ln links.txt linksneu.txt
martin@mlu-yoga:~$ ls -l links.txt
-rw-r--r-- 2 martin root 406 Jan 17  2020 links.txt
martin@mlu-yoga:~$

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: rsync incremental funktioniert nicht über ssh

Beitrag von mludwig » 09.09.2020 13:48:52

In deinem Skript wäre es sehr sinnvoll, das Vollbackup immer Montags zu machen, den Rest der Woche inkrementell.

Du hättest dann in deinem Skript jeden Montag Vollbackup, plus max. 6 inkrementelle Backups die Woche? Und die folgende Woche wieder ein neues Vollbackup.

Ansonsten kann ich dir noch rsnapshot empfehlen, welches sich von allein um Verzeichnisse, Anzahl der Generationen und Versionen kümmert. Bei Rsync reicht ja im Prinzip ein Vollbackup aus, der Rest immer inkrementell. rsnapshot arbeitet so 1. Backup voll, der Rest immer Inkrementell.

Benutzeravatar
joe2017
Beiträge: 1134
Registriert: 07.08.2017 14:29:51

Re: rsync incremental funktioniert nicht über ssh

Beitrag von joe2017 » 09.09.2020 14:49:49

Hi mludwig,

danke für die Vorschläge. Das werde ich mir mal anschauen.
Das mit Montag muss ich mal checken ob von der Dauer meiner Backups funktioniert. Aber das würde einiges vereinfachen.

Benutzeravatar
joe2017
Beiträge: 1134
Registriert: 07.08.2017 14:29:51

Re: rsync incremental funktioniert nicht über ssh

Beitrag von joe2017 » 10.09.2020 09:44:06

mludwig hat geschrieben: ↑ zum Beitrag ↑
09.09.2020 13:38:06
Soweit ich weiss erstellt aber rsync keine symbolischen Links, sondern hard links, falls sich die Datei nicht geändert hat. Mit ls -l sieht man den "reference count" der inode, was bei Dateien mit Hard-links dann entsprechend > 1 sein sollte.

Code: Alles auswählen

martin@mlu-yoga:~$ ls -l links.txt
-rw-r--r-- 1 martin root 406 Jan 17  2020 links.txt
martin@mlu-yoga:~$ ln links.txt linksneu.txt
martin@mlu-yoga:~$ ls -l links.txt
-rw-r--r-- 2 martin root 406 Jan 17  2020 links.txt
martin@mlu-yoga:~$
Wenn ich rsync lokal durchführe ist das genau so wie du beschrieben hast. Wenn ich rsync auf einen Remote Server durchführe, steht bei allen Dateien eine "1".
Es werden jedoch alle Dateien neu kopiert.

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: rsync incremental funktioniert nicht über ssh

Beitrag von mludwig » 10.09.2020 11:20:46

Vielleicht fehlen ihm beim Remote Backup irgendwo trailing slashes (abschließender / am ende des Pfades für --link-dest und/oder SourceDir), oder die Variablen deines Skripts werden remote nicht korrekt übergeben ... da bin ich aber nicht so der Experte.

Was außerdem sein kann: --link-dest funktioniert nur, wenn die Datei inkl. aller Attribute identisch bleibt. Dazu wird die Datei mit Attributen aus dem letzen Backup mit der aktuellen Datei verglichen. Haben denn die Dateien im Vollbackup die gleichen Rechte etc wie die Original-Dateien des Remote-Servers? (mal per ls -la vergleichen!) Das geht eigentlich nur schief, wenn das Backup nicht als root läuft.

Benutzeravatar
joe2017
Beiträge: 1134
Registriert: 07.08.2017 14:29:51

Re: rsync incremental funktioniert nicht über ssh

Beitrag von joe2017 » 10.09.2020 11:48:00

mludwig hat geschrieben: ↑ zum Beitrag ↑
10.09.2020 11:20:46
Was außerdem sein kann: --link-dest funktioniert nur, wenn die Datei inkl. aller Attribute identisch bleibt. Dazu wird die Datei mit Attributen aus dem letzen Backup mit der aktuellen Datei verglichen. Haben denn die Dateien im Vollbackup die gleichen Rechte etc wie die Original-Dateien des Remote-Servers? (mal per ls -la vergleichen!) Das geht eigentlich nur schief, wenn das Backup nicht als root läuft.
Also vielleicht liegt hier der Fehler. Meine Originaldateien haben folgende Berechtigungen:

Code: Alles auswählen

-rwrwx---+ 1 DOMAIN\USER DOMAIN\USER-GROUP
Im Backup habden diese folgende Berechtigung

Code: Alles auswählen

-rwrwxrwx 1 root root
Weshalb werden die Attribute nicht übernommen? Gibt es hierfür eine spezielle Syntax? Die Option -AX hat leider auch nicht geholfen.

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: rsync incremental funktioniert nicht über ssh

Beitrag von mludwig » 10.09.2020 12:09:23

Was ist das Dateisystem des USB-Laufwerks? Dateisystem der Quelle? Die Rechte sehen ja erst mal aus wie Windows bzw. Active Directory.

Benutzeravatar
joe2017
Beiträge: 1134
Registriert: 07.08.2017 14:29:51

Re: rsync incremental funktioniert nicht über ssh

Beitrag von joe2017 » 10.09.2020 12:16:58

Da es sich um eine 10TB Platte handelt, habe ich ntfs gewählt. Wahrscheinlich haben wir gerade das Problem gefunden!

Und genau das war mein Problem. Neue USB HD mit EXT4 und zack alles funktioniert. :facepalm:
Vielen Dank mludwig für diesen Gedankenanstoß! :hail:

Antworten