Las páginas de manual no tienen ejemplos para esto. Me resulta difícil decirle a rsync que solo incluya algunos archivos donde se encuentran esos archivos. No entiendo por qué hay que excluir para incluir, por qué rsync
simplemente no se incluye lo que hay en el archivo de inclusión y todo lo demás se excluirá.
Este es mi guión:
rsync -ruv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir remoteSrv:/tmp/.
y este es mi archivo de inclusión que no funciona: Copia demasiado: copia todo lo que hay en el /usr2/subdir (incluido el subdir
directorio, raro) que no quiero. Quiero copiar solo los archivos per, 42f y xml del data/text_forms
directorio.
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
y lo siguiente no funciona, no copia nada:
- *
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
y tampoco funciona lo siguiente, no copia nada:
- *
+ data/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
y tampoco funciona lo siguiente, no copia nada:
- *
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
Lo siguiente tampoco funciona:
+ */
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *
Ninguno de los siguientes funciona:
+ /data/
+ /data/text_forms/
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *
Respuesta1
Encontré la solución. Me tomó dos días completos encontrarlo. Espero que esto te ayude a no perder tanto tiempo.
subdir
El primer problema fue que se incluía el subdirectorio /usr2/subdir
y no quería que se incluyera todo el directorio, solo quería que fuera el directorio base, por lo que requiere una barra al final como en /usr2/subdir/
, por lo que mi nuevo comando se ve como:
rsync -ruvv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir/ remoteSrv:/tmp/.
Tenga en cuenta que agregué una v
opción adicional en la línea de comando ( -ruvv
) para obtener más detalles de lo que se excluyó o incluyó al momento de ejecutar el comando. Con el directorio base arreglado y el extra, v
fue un poco más fácil crear el archivo de inclusión correcto:
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
- *
Todas las +
líneas deben colocarse antes de - *
, especialmente para los directorios, ya que tuve que incluir explícitamente cada directorio para escanear, incluso si no quiero obtener archivos directamente dentro de esos directorios. Hice una prueba agregando a data/anyTestFile1
y a data/text_forms/anyTestFile2
porque no estaba seguro de si iban a ser recogidos, pero no fue así, así que estoy haciendo lo que quiero... finalmente.