El segundo ejemplo lee los datos del lote a través de la entrada estándar para que el archivo del lote no necesite copiarse primero en la máquina remota. Este ejemplo evita el script foo.sh porque necesitaba usar una opción modificada --read-batch, pero podría editar el archivo de script si desea utilizarlo (solo asegúrese de que ninguna otra opción intente usar el estándar entrada, como la opción "--exclude-from = -").
Advertencias:
La opción de lectura por lotes espera que el árbol de destino que está actualizando sea idéntico al árbol de destino que se utilizó para crear el conjunto de archivos de actualización por lotes. Cuando se encuentra una diferencia entre los árboles de destino, la actualización puede descartarse con una advertencia (si el archivo parece estar ya actualizado) o puede intentarse la actualización del archivo y luego, si el archivo no se verifica , la actualización se descartó con un error. Esto significa que debería ser seguro volver a ejecutar una operación de lectura por lotes si el comando se interrumpió. Si desea forzar que siempre se intente la actualización por lotes, independientemente del tamaño y la fecha del archivo, use la opción -I (al leer el lote). Si se produce un error, el árbol de destino probablemente estará en un estado parcialmente actualizado. En ese caso,
La versión rsync utilizada en todos los destinos debe ser al menos tan nueva como la utilizada para generar el archivo por lotes. Rsync morirá con un error si la versión del protocolo en el archivo por lotes es demasiado nueva para que la rsync de lectura por lotes pueda manejarla. Consulte también la opción --protocol para obtener una manera de que la creación de rsync genere un archivo por lotes que una rsync más antigua puede comprender. (Tenga en cuenta que los archivos por lotes cambiaron de formato en la versión 2.6.3, por lo que no funcionará mezclar versiones anteriores a las nuevas).
Al leer un archivo por lotes, rsync forzará el valor de ciertas opciones para que coincidan con los datos del archivo por lotes si no los configuró de la misma manera que el comando de escritura por lotes. Otras opciones pueden (y deberían) cambiarse. Por ejemplo, --write-batch cambia a --read-batch, --files-from se descarta, y las opciones --filter / - include / - exclude no son necesarias a menos que se especifique una de las opciones --delete .
El código que crea el archivo BATCH.sh transforma cualquier opción de filtro / inclusión / exclusión en una lista única que se agrega como un documento "aquí" al archivo de script de shell. Un usuario avanzado puede usar esto para modificar la lista de exclusión si se desea un cambio en lo que se elimina por --delete. Un usuario normal puede ignorar este detalle y simplemente usar el script de shell como una forma fácil de ejecutar el comando --read-batch apropiado para los datos por lotes.
El modo por lotes original en rsync se basaba en "rsync +", pero la última versión usa una nueva implementación.
remote destination is not allowed with --read-batch