Rsync kopiert Dateien jedes Mal erneut

HPC

Ensign
Registriert
Sep. 2009
Beiträge
164
Hallo Community,

ich habe bei mir eine Synology DS223j im Einsatz. Diese dient als reines Backup System. Unter Windows habe ich das mit Synology Drive Client realisiert, will aber auch meinen Linux Rechner sichern. Das möchte ich dort mit rsync machen, was an für sich auch klappt, aber beim erneuten ausführen des Backups sichert er jede Datei erneut. Das soll aber inkrementell passieren.

Hier mein Script: rsync -av --modify-window=2 --log-file="$LOG_FILE" "$QUELLE" "$ZIEL"

Modify Window habe ich im Nachgang hinzugefügt, was aber auch nichts brachte.
Da die KI sagt, dass ext4 und btfrs scheinbar etwas unterschiedlich bei den Rechten sind, habe ich das mal so modifiziert, was aber auch nicht zum Erfolg führte: rsync -av --modify-window=60 --no-owner --no-group --numeric-ids --log-file="$LOG_FILE" "$QUELLE" "$ZIEL"

Am Ende brachte es nur was, wenn ich die Prüfsummenoption mit rein genommen habe. Da konnte ich auch das modify-window weglassen, aber das dauert wirklich Ewigkeiten, weshalb ich wenn es eben geht darauf verzichten will.

Kann mir jemand Hilfestellung geben? Ich möchte das Ganze zwingend mit rsync realiseren, da ich perspektisch auf OpenMediaVault wechseln werde.
 
HPC schrieb:
Kann mir jemand Hilfestellung geben? Ich möchte das Ganze zwingend mit rsync realiseren, da ich perspektisch auf OpenMediaVault wechseln werde.
gerade nicht auswendig, aber warum ist rsync zwingend? Was spricht gegen backuptools mit versionierung wie restic / borg? funktioniert auch mit synology und OMV, ist flexibler und hat mehr funktionen wenn es dir um backups geht
 
  • Gefällt mir
Reaktionen: Eletron und Alexander2
https://community.synology.com/enu/forum/1/post/151494
okkk, i think i have identified the issue
my rsync is done from a Pi folder to a mounted network drive on the PI, so its like if it was done from the Pi to the Pi
i have tried this command : sudo rsync -avi /home/pi/allsky/images/ rsync@192.168.2.133:/volume1/Allsky/Images
and it works perfectly ! no modified attributes !
If my understanding is correct, now i just have to understand how i can avoid to type the password each time the rsync is launched....
unless there could be a way to work with a network drive mounted on the Pi but without the modification of attributes...
https://kb.synology.com/en-global/DSM/help/DSM/AdminCenter/file_rsync?version=7

Vielleicht hilft dir das weiter...
 
Ich bekomme es aktuell nicht hin ...
Ich versuche mich gerade per SSH auf die NAS einzuloggen. SSH ist auf der NAS aktiviert.
Firewall ist eigentlich nicht an, da die NAS nur lokal freigegeben ist, aber selbst wenn ich die Ports freischalte, bekomme ich nach Eingabe des Passworts die Meldung "Permission denied, please try again. Connection to 192.168.2.150 closed."
Ich zweifel gerade an mir selbst ...
Was mache ich falsch?
 
Da brauche ich doch nur das Nutzerpasswort oder nicht?
 
Nimm statt -v mal -i. Das sagt dir den Grund, warum rsync neu übertragen will. Notfalls auch mal mit -c, dann macht rsync eine Inhaltsprüfung.
 
Ich fasse einmal zusammen, was ich gemacht habe, damit nicht irgendwas Grundsätzliches falsch ist:
Auf der Synology NAS hat der Linux Rechner einen eigenen Benutzeraccount mit entsprechendem Verzeichnis.
Das habe ich unter Linux fest gemounted. Hier werden per rsync auch die Dateien hingeschoben.
In der NAS ist der rsync Dienst unter SSH Port 22 aktiviert. Die Firewall in der NAS ist aus, da nur lokal.
Der Terminal Dienst SSH ist unter Port 22 aktiviert.

Ich führe unter Linux folgendes Skript aus:

Code:
#!/bin/bash

# Quellen und Ziele definieren (als Array)
QUELLEN=(
    "/home/server/Dokumente:/mnt/NAS"
    "/home/server/Transfer/_Test:/mnt/NAS"
)

LOG_FILE="/home/server/Dokumente/log/rsync_backup.log"

# Schleife über alle Quellen
for PAIR in "${QUELLEN[@]}"; do
    # Quelle und Ziel aufteilen
    QUELLE=$(echo "$PAIR" | cut -d':' -f1)
    ZIEL=$(echo "$PAIR" | cut -d':' -f2)

    echo "$(date) - Sichere $QUELLE nach $ZIEL" >> "$LOG_FILE"

    # Backup durchführen

    rsync -av --log-file="$LOG_FILE" "$QUELLE" "$ZIEL"


    # Erfolg prüfen
    if [ $? -eq 0 ]; then
        echo "$(date) - Erfolgreich: $QUELLE" >> "$LOG_FILE"
    else
        echo "$(date) - FEHLER bei: $QUELLE" >> "$LOG_FILE"
    fi
done

Wie gesagt, kopieren geht, aber er kopiert eben immer neu und ich verstehe nicht warum.

Donnerkind schrieb:
Nimm statt -v mal -i. Das sagt dir den Grund, warum rsync neu übertragen will. Notfalls auch mal mit -c, dann macht rsync eine Inhaltsprüfung.
Das habe ich nun mal gemacht. Bei den Dateien bekomme ich folgende Zeichenkette: >f . . tp . . . . .
 
Zuletzt bearbeitet:
Das sagt dir, dass sich nur der Zeitstempel (t) und die Berechtigungen (p) geändert haben. Ersteres könnte mit dem Dateisystem zu tun haben (Auflösung), wobei ichs trotzdem merkwürdig finde. Letzteres eventuell mit begrenzten Berechtigungen des Syno-Nutzers. Statt -a empfehle ich daher -rt, oder eben nur -r, falls du das mit den Zeitstempeln nicht gelöst bekommst.

PS.: das Skript nächstes Mal bitte in einen Codeblock verpacken.
Ergänzung ()

Ach und: wenn nur Metadaten wie t und p geändert sind, überträgt rsync eigentlich nicht alles nochmal, sondern ändert tatsächlich nur diese Informationen. Manchmal klappt das aber auch nicht.
 
  • Gefällt mir
Reaktionen: madmax2010
OK, auf dem Linux Rechner habe ich ext4, auf der NAS btfrs.
Habe es jetzt noch mal mit der Option -rti probiert.
Erster Transfer: >f+++++++++
Zweiter Transfer: >f . . t . . . . . .

Habe es auch mal mit der Option versucht
Code:
rsync -rti --modify-window=2 --log-file="$LOG_FILE" "$QUELLE" "$ZIEL"

Leider keine Verbesserung.

Eine Nachfrage: Ich sichere in das Home Verzeichnis der Benutzers auf der NAS. Das sollte aber eigentlich kein Problem darstellen, oder?

Am Mount kann es auch nicht liegen?
Code:
//192.168.2.150/home   /mnt/NAS   cifs credentials=/root/.smbcredentials_NAS,vers=3.1.1,rw,uid=1000,gid=1000,file_mode=0660,dir_mode=0770,nofail,x-systemd.requires=network-online.target 0 0
 
Zuletzt bearbeitet:
Hm, ich nutze ext4 auf dem PC uns btrfs auf dem Laptop. Wenn ich da rsync mache, klappt das mit den Zeitstempeln eigentlich zuverlässig. Ich kann es dir leider nicht erklären. Kannst du auf beiden Systemen mal stat auf irgendeine Datei ausführen und die Ausgaben vergleichen? Insbesondere was den Zeitstempel angeht.
Ergänzung ()

Ah, da fällt mir was auf: dein Rsync-Ziel ist ein lokales Verzeichnis, du mountest das also per Netzwerkmethode (samba?), wodurch du keinen „nativen“ Zugang mehr zum Dateisystem in der Syno hast. Das kann beide Probleme erklären – Benutzer und Zeitstempel. Abhilfe würde ein ssh-Zugang schaffen, über den rsync direkt mit einem rsync-Prozess in der Syno redet. Oder NFS statt SMB nutzen.
 
Ja, ich mounte das Verzeichnis auf der NAS per Samba. Habe den Mount oben noch ergänzt. Das funktioniert also nicht? Wie sähe die rsync Befehlszeile denn ohne Samba aus?
 
Soweit ich weiß (Halbwissen) hat Samba eine deutlich niedrigere Auflösung bei Zeitstempeln. Da wird das immer wieder auftreten.

Du kannst NFS versuchen. Das ist u.U. komplizierter einzurichten (ich habe keine Erfahrung mit Synology), aber sollte weniger Probleme bereiten.

Wenn du rsync über SSH machst, ändert sich die Ortsangabe ganz allgemein zu Benutzer@Host:Pfad. Aber da steckt noch etwas mehr Wissenschaft dahinter. 🫣
 
  • Gefällt mir
Reaktionen: HPC
OK, das Problem scheint mein Versuch per Samba gewesen zu sein. Wenn ich per benutzername@nas-ip/pfad die Dateien schicke, dann klappt es. Bin noch relativ neu in der Linux Welt. Da muss ich mich noch etwas zurechtfinden. Vielen Dank für die Hilfe
 
  • Gefällt mir
Reaktionen: metallica2006 und Donnerkind
Zurück
Oben