Existe-t-il un moyen de mettre des commentaires dans un fichier rsync --files-from?

10

J'ai un fichier que rsync utilise comme --files-from:

dir1
dir2
dir3

Je veux pouvoir mettre des commentaires au-dessus de chaque entrée dir comme ça:

# my dir1 comment
dir1

#dir2 comment
dir2

#yet another comment
dir3

mais rsync se plaint "Aucun fichier ou répertoire"

Jusqu'à présent, j'ai essayé #, //, - ,, SPACE

Existe-t-il un moyen de commenter / désactiver les entrées?

user98989
la source
Je ne connais aucun mécanisme de commentaire pour le files-fromfichier.
jw013

Réponses:

17

Selon la manpage surrsync:

"... Lignes vides dans FILE et lignes commençant par ';' ou '#' sont ignorés ... "

Je viens de lancer un test rapide et en effet #, les ;lignes sont ignorées.

rob_7cc
la source
Je ne peux pas appuyer le ;mais le #(regarder ici , chercher ‚quand les règles sont ... '). → C'est donc sans doute #un peu plus sûr ...
Frank Nocke
Pas dans cette page de manuel rSync : linux.die.net/man/1/rsync , ni dans cet autre: ss64.com/bash/rsync.html . Pourriez-vous s'il vous plaît référer le vôtre?
Sopalajo de Arrierez
1
Votre page montre en effet que les lignes commençant par # sont des commentaires: linux.die.net/man/1/rsync indique "... Lorsque les règles sont lues à partir d'un fichier, les lignes vides sont ignorées, tout comme les lignes de commentaires commençant par a lq # rq. ... "(lq et rq sont des notations pour la citation gauche et la citation droite ... Je ne sais pas pourquoi cette page Web rend les guillemets comme ces abréviations). Quoi qu'il en soit, # dans un fichier d'exclusion rsync sont des commentaires. Peut-être que l'autre page de manuel à laquelle vous faites référence est simplement ancienne. Vous pouvez consulter l'historique du journal rsync ici: git.samba.org/?p=rsync.git;a=log
rob_7cc
La meilleure chose à faire est de consulter la page de manuel sur la plate-forme sur laquelle vous développez pour déterminer la version de rsync que vous utilisez; vous pouvez rechercher dans la page de manuel comment les commentaires sont traités par cette version de rsync.
rob_7cc
10

Faites un grep -v '^#' file > /tmp/filetmp, puis lancez votre rsync sur/tmp/filetmp

Selon votre shell, vous pourrez peut-être éviter le fichier temporaire (ceci est valable dans Bash):

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

La <( … )syntaxe étrange est ce que Bash appelle la substitution de processus .

Dom
la source
3
J'ai ajouté le modèle à votre grep pour vous - je suppose que c'est ce que vous vouliez dire ... Je vais également ajouter une astuce bash, n'hésitez pas à annuler une ou les deux modifications si vous n'êtes pas d'accord.
derobert
Vous pouvez utiliser --files-from=-pour avoir rsynclu la liste à partir de l'entrée standard.
Kusalananda
-1

état pour l'instant (protocole rsync version 3.1.1 version 31): toutes les lignes à partir de #ou ;sont ignorées mann'ont même aucune information à ce sujet (mon cas était différent, je voulais copier un fichier nommé ;_charet j'ai été surpris de ne pas même utiliser - -from0 option - après avoir changé de ligne, ./;_charil a commencé à fonctionner). Semble que la même fonction d'analyse est utilisée que pour les options --include-fromou --exclude-from Pour ces deux options, la manpage mentionne: Blank lines in the file and lines starting with ’;’ or ’#’ are ignored

ddzialak
la source