¿Hay alguna manera de poner comentarios en un archivo rsync --files-from?

10

Tengo un archivo que rsync usa como --files-from:

dir1
dir2
dir3

Quiero poder poner comentarios sobre cada entrada de directorio así:

# my dir1 comment
dir1

#dir2 comment
dir2

#yet another comment
dir3

pero rsync se queja "No existe tal archivo o directorio"

Hasta ahora he intentado #, //, - ,, ESPACIO

¿Hay alguna manera de comentar / deshabilitar entradas?

user98989
fuente
No conozco ningún mecanismo de comentarios para el files-fromarchivo.
jw013

Respuestas:

17

Según la manpágina enrsync:

"... Líneas en blanco en ARCHIVO y líneas que comienzan con ';' o '#' se ignoran ... "

Me acabo de encontrar una prueba rápida y efectivamente #y ;se ignoran las líneas.

rob_7cc
fuente
No puedo segundos el ;pero el #(mirando aquí , buscando, cuando las reglas son ... '). → #
Podría
No en esta página de manual de rSync : linux.die.net/man/1/rsync , ni en esta otra: ss64.com/bash/rsync.html . ¿Podrías por favor referir el tuyo?
Sopalajo de Arrierez
1
De hecho, su página muestra que las líneas que comienzan con # son comentarios: linux.die.net/man/1/rsync indica "... Cuando las reglas se leen desde un archivo, las líneas vacías se ignoran, al igual que las líneas de comentarios que comienzan con a lq # rq. ... "(lq y rq son notación para la cita izquierda y la cita derecha ... No sé por qué esa página web presenta citas como estas abreviaturas). En cualquier caso, # en un archivo de exclusión rsync son comentarios. Quizás la otra página de manual a la que hace referencia es simplemente antigua. Puede revisar el historial de registro de rsync aquí: git.samba.org/?p=rsync.git;a=log
rob_7cc
Lo mejor que puede hacer es mirar la página de manual en la plataforma donde está desarrollando para determinar la versión de rsync que está utilizando; puede buscar en la página del manual cómo se manejan los comentarios con esa versión de rsync.
rob_7cc
10

Haga un grep -v '^#' file > /tmp/filetmpy luego inicie su rsync en/tmp/filetmp

Dependiendo de su shell, puede evitar el archivo temporal (esto es válido en Bash):

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

La <( … )sintaxis de aspecto extraño es lo que Bash llama sustitución de proceso .

Dom
fuente
3
Agregué el patrón a tu grep por ti. Supongo que esto es lo que querías decir ... También agregaré un truco bash, siéntete libre de revertir una o ambas ediciones si no estás de acuerdo.
derobert
Puede usar --files-from=-para haber rsyncleído la lista desde la entrada estándar.
Kusalananda
-1

estado por ahora (rsync versión 3.1.1 protocolo versión 31): todas las líneas que comienzan desde #o ;se ignoran, incluso manno tienen información al respecto (mi caso era diferente, quería copiar un archivo llamado ;_chary me sorprendió que ni siquiera estaba usando - Opción -from0: después de cambiar la línea ./;_char, comenzó a funcionar). Parece que se usa la misma función de análisis que para las opciones --include-fromo --exclude-from para estas dos opciones man, mencione la página: Blank lines in the file and lines starting with ’;’ or ’#’ are ignored

ddzialak
fuente