Actualmente estoy usando rsyncun script que implementa una aplicación PHP desde una puesta en escena a un servidor de producción. Aquí es cómo:
rsync -rzai --progress --stats --ignore-times --checksum /tmp/app_export/ root@app.com:/var/www/html/app/
Actualmente, esto genera una lista de cada archivo que se está comparando (cada archivo del proyecto), pero me gustaría que solo muestre los modificados, por lo que puedo ejecutarlo con una --dry-runopción para verificar que cada implementación solo actualice archivos deseados
NOTA: Lo mejor que puedo hacer hasta ahora son grep fcstlos resultados, pero estoy buscando una rsyncopción que estoy seguro de que está allí, pero no la encuentro en las páginas del manual.
¡Gracias por adelantado!

-Pprogreso hace exactamente eso en la-nconfiguración de ejecución en seco, aunque-itampoco está mal. Vea mi respuesta a continuación.Usa la
--out-formatopciónSegún la página del manual:
Si solo necesita los nombres de archivo reales (
--out-format="%n"), su comando de ejecución en seco podría verse así:rsync -rzan --out-format="%n" --ignore-times --checksum /tmp/app_export/ [email protected]:/var/www/html/app/Cuando se llama a rsync con
-v, utiliza internamente esta opción con un formato predeterminado de"%n%L", que le indica solo el nombre del archivo y, si el elemento es un enlace, dónde apunta.Pero esto también incluye un breve resumen al principio y al final del proceso de sincronización.
Para deshacerse de ese resumen, use la
--out-formatopción directamente.Por cierto.
-iTambién utiliza internamente--out-format, pero con un formato de"%i %n%L".fuente
A partir de rsync v3.1.0, lanzado en 2013, existe el
--infoindicador que permite un control detallado sobre la salida.Las
--infobanderas disponibles son:fuente
No estoy seguro si esto difiere entre las versiones / opciones utilizadas, pero en mi versión cuando uso la
-iopción obtengo una lista como:Entonces, una solución simple para obtener solo una lista de archivos realmente transferidos simplemente se ejecuta:
Esto simplemente ocultará todas las líneas que contengan
f..T....... Así que efectivamente esto ocultará archivos idénticos.fuente
En realidad, respondiste tu propia pregunta, ya que tu comando original ya la tiene:
--progressEsta es la opción correcta, aunque la página del manual es un poco críptica al respecto:
Tiene un poco de sentido, ya que invoca su
rsynccadena con el modo de ejecución en seco, no ocurre ningún transer, pero aún tendría progreso: es decir, los archivos que han cambiado y se transferirán.De esta manera obtienes una pequeña lista de todos los archivos, por ejemplo:
El destino ya tiene una copia del archivo modificado que se actualizó en el archivo fuente y antiguo, que permanece sin cambios. La fuente también tiene un archivo adicional: newfile.
Si luego invocamos su comando rsync, pero eliminamos los elementos
-iy simplemente agregamos dryrun-nObtiene una lista de solo los archivos que rsync podría transferir: archivo cambiado y archivo nuevo.
fuente