[Erledigt] rsync: Vorher-Nachher-Beispiel bzgl. Änderungen im Argumente-Handling ab Version 3.2.4

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
buhtz
Beiträge: 1099
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

[Erledigt] rsync: Vorher-Nachher-Beispiel bzgl. Änderungen im Argumente-Handling ab Version 3.2.4

Beitrag von buhtz » 23.08.2022 09:10:48

Ich versuche bei Debianrsync eine Änderung bzw. dessen praktische Konsequenzen zu verstehen, die mit Version 3.2.4 eingeführt wurde. Hier werden Pfade anders behandelt. Soweit ich es verstehe, werden Sie eben gar nicht mehr manipuliert, sondern so wie eingegeben auch an remote geschickt. Vor 3.2.4 war das wohl anders.

Den Abschnitt ADVANCED_USAGE in der manpage habe ich mehrfach gelesen. Dort gibt es dieses Beispiel (für den neuen Style?):

Code: Alles auswählen

rsync --archive --itemize-changes --verbose host:'a simple file.pdf' /dest/
Also ist dort eine Datei (Name: a simple file.pdf) mit zwei Leerzeichen im SRC.

Wie würde man das mit dem alten rsync schreiben, damit es funktioniert? Abgesehen von einem praktischen Beispiel, dass mir beim Verstehen hilft, suche ich eigentlich eine Möglichkeit bzw. Schreibweise, die ohne Änderungen mit der alten und neuen rsync Version funktioniert. Mir ist nicht ganz klar, ob das möglich ist.

EDIT:
Soweit ich verstehe:
In der alten Version gibt es wohl das Argument --protect-args mit dem man praktisch das Verhalten der neuen (ab 3.2.4) Version erzwingen kann.
Anders herum gibt es in der neuen Version das Argument --old-args, um das alte Verhalten (3.2.3 und älter) zu erzwingen.
Zuletzt geändert von buhtz am 30.08.2022 09:18:28, insgesamt 1-mal geändert.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

uname
Beiträge: 12043
Registriert: 03.06.2008 09:33:02

Re: rsync: Vorher-Nachher-Beispiel bzgl. Änderungen im Argumente-Handling ab Version 3.2.4

Beitrag von uname » 23.08.2022 12:31:04

Ich wusste nicht mal, dass in rsync was geändert wurde.

Code: Alles auswählen

rsync --archive --itemize-changes --verbose host:'a simple file.pdf' /dest/
Leider verstehe ich dein Bespiel nicht. Vor Jahren habe ich mal ein Backup-Script mit rsync geschrieben.
Den Befehl --verbose host: habe nie genutzt. Wenn das die Ausgabe minimiert oder maximier:
Ich schreibe Logs sowieso in Logdateien, die ich lese oder besser auch nicht.

Aber nach --verbose host: hätte ich vielleicht einen Pfad und keine Datei auch noch mit Leerzeichen erwartet.

Bitte schreib mal, was du überhaupt bewirken willst.
Was ändert sich in rsync und brauchst du dieses wirklich?
Was ist an der einen Datei a simple file.pdf so wichtig, dass du dafür extra einen Parameter für eingibst?

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: rsync: Vorher-Nachher-Beispiel bzgl. Änderungen im Argumente-Handling ab Version 3.2.4

Beitrag von JTH » 23.08.2022 12:43:56

uname hat geschrieben: ↑ zum Beitrag ↑
23.08.2022 12:31:04
Leider verstehe ich dein Bespiel nicht. Vor Jahren habe ich mal ein Backup-Script mit rsync geschrieben.
Den Befehl --verbose host: habe nie genutzt.
Das sind zwei getrennte Dinge ;)

Einmal die Option --verbose, damit rsync gesprächiger ist.

Dann die Angabe

Code: Alles auswählen

host:'a simple file.pdf'
um die Datei „a simple file.pdf“ vom entfernten Rechner mit Namen „host“ zu kopieren.
Manchmal bekannt als Just (another) Terminal Hacker.

buhtz
Beiträge: 1099
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: rsync: Vorher-Nachher-Beispiel bzgl. Änderungen im Argumente-Handling ab Version 3.2.4

Beitrag von buhtz » 23.08.2022 12:49:46

Danke für die Erklärung JTH. Genau so ist es.

Das Beispiel ist 1 zu 1 aus der manpage. Ich habe nur die abgekürzten switches (-a), dem Verständnis wegen voll ausgeschrieben (--archive).

Was ich will? Na ich will wissen, wie man das Beispiel schreiben müssten, damit es mit der "alten" rsync Version funktioniert. So würde es nämlich nicht funktionieren.

Was sich geändert hat? Wenn ich das gut erklären könnte, müsste ich nicht so DAU-mäßig nach Beispielen fragen. Meine Bitte um praxisrelevante Beispiele zielt eben darauf ab, das besser zu verstehen. Danach kann ich es dir evtl. auch erklären. ;)

Hintergrund:
Nutzt man rsync in scripten oder als Backend in Anwendungen muss man das verstehen. Die in der manpage angebotenen Workarounds reichen mir nicht. Ich suche eine Lösung für beide Rsync Varianten. Die finde ich aber evtl. auch selber, wenn ich die Ursache besser verstanden habe.
Mal sehen, ob ich heute Nacht noch Energie habe ein stable (hat noch die "alte" Variante) und testing (die "neue" Variante) System aufzusetzen, um die Unterschiede auszuprobieren.

EDIT:
Hier mal ein Quick&Dirty Beispiel um die Situation zu demonstrieren (Debian 11 stable arm64 von raspi.debian.net).

Es handelt sich um die "alte" rsync Variante.

Code: Alles auswählen

rsync -V
rsync  version 3.2.3  protocol version 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
    batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv,
    symtimes, prealloc, stop-at, no crtimes
Optimizations:
    no SIMD, no asm, openssl-crypto
Checksum list:
    xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
    zstd lz4 zlibx zlib none
Quelle und Ziel im Home-Verzeichnis

Code: Alles auswählen

  quark  user  ~  ld dest
drwxr-xr-x 3 user user 4,0K 23. Aug 13:01 dest/
  quark  user  ~  ld src*
drwxr-xr-x 2 user user 4,0K 23. Aug 12:59 'src i am'/
  quark  user  ~  ls src*
'file with blanks.dat'
Jetzt schreiben wir das mal so, wie mein Beispiel (für die neue Rsync-Variante!) aus der manpage:

Code: Alles auswählen

  quark  user  ~  rsync --verbose --archive --itemize-changes localhost:'src i am' dest
receiving incremental file list
rsync: [sender] link_stat "/home/user/src" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/user/i" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/user/am" failed: No such file or directory (2)
Alles klar? Die Frage ist nun, wie schreibe ich das (ohne weitere Optionen/Switches oder Environment Variablen einzusetzen), so dass es funktioniert?

So sehe ein Workaround mit switch --protect-args aus.

Code: Alles auswählen

  quark  user  ~  rsync --protect-args --verbose --archive --itemize-changes localhost:'src i am' dest
receiving incremental file list

sent 25 bytes  received 110 bytes  38.57 bytes/sec
total size is 0  speedup is 0.00
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

buhtz
Beiträge: 1099
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: [Erledigt] rsync: Vorher-Nachher-Beispiel bzgl. Änderungen im Argumente-Handling ab Version 3.2.4

Beitrag von buhtz » 31.08.2022 13:30:33

Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Antworten