aber bist du dir sicher mit den Anführungszeichen?
Ja damit bin ich mir sehr sicher.
Du vergleichst hier nämlich Äpfel mit Birnen.
Das was du in deinem Post
#26 in der Code Sektion zeigst, ist ein
ls -l "@*"
. Das heißt du möchtest explizit eine Datei mit dem Namen
@*
auflisten. Ich bin mir sicher dass du in diesem Verzeichnis
/volume1/Testordner
keine Datei mit exakt diesem Namen liegen hast und aus diesem Grund erscheint die korrekte Fehlermeldung
ls: cannot access '@*': No such file or directory
.
Der Befehl
ls
verhält sich nämlich anders als
rsync
und sein Parameter
--exclude
.
Stellt man bei
ls
etwas in Anfürhungszeichen dann sucht man genau nach diesem Namen. Lässt man die Anfürhungszeichen weg so wird Asterisk als Platzhalter verwendet.
Bei rsync wird hingegen Asterisk direkt als Platzhalter betrachtet und möchte man tatsächlich nach dem Sternchen suchen dann muss man dieses Zeichen eben escapen.
Ich mache mal ein Beispiel:
1. Beispiel mit dem Kommando
ls
:
Bash:
# Zunächst das Verzeichnis auflisten:
~/.tmp$ ls -l
total 0
# Suche nach dem besagten Namen mit Anführungszeichen, wird nicht gefunden
~/.tmp$ ls -l "@*"
ls: cannot access '@*': No such file or directory
# Datei Namens @* anlegen
~/.tmp$ touch "@*"
# Suche nach dem besagten Namen mit Anführungszeichen, wird gefunden
~/.tmp$ ls -l "@*"
-rw------- 1 root root 0 Feb 13 09:36 '@*'
# Suche nach Vorkommnissen die mit eine @ beginnen
~/.tmp$ ls -l @*
-rw------- 1 root root 0 Feb 13 10:19 '@*'
2. Beispiel mit dem Kommando
rsync
:
Bash:
# Auflisten des leeren Verezicnis mit rsync
~/.tmp$ rsync -a --list-only /root/.tmp/
drwx------ 4,096 2024/02/13 09:49:51 .
# Erstellen einer Datei Namens @* und eines Verzeichnis @eaDir
~/.tmp$ touch "@*" && mkdir @eaDir
# Auflisten mit rsync
~/.tmp$ rsync -a --list-only /root/.tmp/
drwx------ 4,096 2024/02/13 09:59:49 .
-rw------- 0 2024/02/13 09:59:49 @*
drwx------ 4,096 2024/02/13 09:59:49 @eaDir
# Auflisten mit rsync und alle Vorkommnisse die mit @ beginnen ausschließen
~/.tmp$ rsync -a --list-only --exclude="@*" /root/.tmp/
drwx------ 4,096 2024/02/13 09:59:49 .
# Auflisten mit rsync und jetzt alle Vorkommnisse ausschließen die mit @* beginnen
~/.tmp$
rsync -a --list-only --exclude="@\*" /root/.tmp/
drwx------ 4,096 2024/02/13 09:59:49 .
drwx------ 4,096 2024/02/13 09:59:49 @eaDir
Jeder Befehl arbeitet nämlich anders und muss dementsprechend mit der für ihn vorgesehenn Syntax behandelt werden.