Gibt es eine Möglichkeit, Kommentare in eine rsync --files-from-Datei einzufügen?

10

Ich habe eine Datei, die rsync als --files-from verwendet:

dir1
dir2
dir3

Ich möchte in der Lage sein, Kommentare über jeden Verzeichniseintrag wie folgt zu setzen:

# my dir1 comment
dir1

#dir2 comment
dir2

#yet another comment
dir3

aber rsync beschwert sich "Keine solche Datei oder Verzeichnis"

Bisher habe ich #, //, - ,, SPACE ausprobiert

Gibt es eine Möglichkeit, Einträge zu kommentieren / zu deaktivieren?

user98989
quelle
Mir ist kein Kommentarmechanismus für die files-fromDatei bekannt.
jw013

Antworten:

17

Laut der manSeite aufrsync:

"... Leerzeilen in DATEI und Zeilen, die mit ';' beginnen oder '#' werden ignoriert ... "

Ich lief einen schnellen Test und in die Tat #und ;Linien ignoriert werden.

rob_7cc
quelle
Ich kann das nicht Sekunden, ;aber das #( hier suchen , suchen, wenn Regeln sind ... '). → Also ist wohl #ein bisschen sicherer ...
Frank Nocke
Nicht in dieser rSync-Manpage: linux.die.net/man/1/rsync , auch nicht in dieser anderen: ss64.com/bash/rsync.html . Könnten Sie bitte Ihre verweisen?
Sopalajo de Arrierez
1
Ihre Seite zeigt tatsächlich, dass Zeilen, die mit # beginnen, Kommentare sind: linux.die.net/man/1/rsync gibt an "... Wenn Regeln aus einer Datei gelesen werden, werden leere Zeilen ignoriert, ebenso wie Kommentarzeilen, die mit beginnen a lq # rq. ... "(lq und rq sind Notationen für linkes und rechtes Anführungszeichen ... Ich weiß nicht, warum diese Webseite Anführungszeichen als diese Abkürzungen wiedergibt). Unabhängig davon sind # in einer rsync-Ausschlussdatei Kommentare. Vielleicht ist die andere Manpage, auf die Sie verweisen, einfach alt. Sie können den rsync-Protokollverlauf hier überprüfen
rob_7cc
Am besten sehen Sie sich die Manpage auf der Plattform an, auf der Sie entwickeln, um die von Ihnen verwendete Version von rsync zu ermitteln. Sie können die Manpage danach durchsuchen, wie Kommentare von dieser Version von rsync behandelt werden.
rob_7cc
10

Führen Sie a aus grep -v '^#' file > /tmp/filetmpund starten Sie dann Ihren rsync auf/tmp/filetmp

Abhängig von Ihrer Shell können Sie möglicherweise die temporäre Datei vermeiden (dies gilt in Bash):

rsync --files-from <(grep -v '^#' file) …

Die seltsam aussehende <( … )Syntax nennt Bash Prozesssubstitution .

Dom
quelle
3
Ich habe das Muster für Sie zu Ihrem Grep hinzugefügt - ich nehme an, das haben Sie gemeint ... Ich werde auch einen Bash-Trick hinzufügen. Wenn Sie nicht einverstanden sind, können Sie eine oder beide Änderungen rückgängig machen.
Derobert
Möglicherweise --files-from=-haben rsyncSie die Liste von der Standardeingabe gelesen.
Kusalananda
-1

Status für jetzt (rsync Version 3.1.1 Protokoll Version 31): Alle Zeilen, die von beginnen #oder ;ignoriert werden, manhaben sogar keine Informationen darüber (mein Fall war anders, ich wollte eine Datei mit dem Namen kopieren ;_charund war überrascht, dass nicht einmal - -from0 Option - nach dem Ändern der Zeile ./;_charbegann es zu funktionieren). Scheint, dass die gleiche Analysefunktion wie für Optionen verwendet wird --include-fromoder --exclude-from für diese beiden Optionen manSeite erwähnen: Blank lines in the file and lines starting with ’;’ or ’#’ are ignored

ddzialak
quelle