2011-12-20 18 views
18

¿Alguien sabe si hay una opción rsync, por lo que los directorios que se están recorriendo no se muestran en stdout.No mostrar directorios en la salida rsync

Estoy sincronizando bibliotecas de música, y la gran cantidad de directorios hace que sea muy difícil ver qué cambios de archivos están realmente sucediendo. Ya he intentado -v y -i, pero ambos también muestran directorios.

Respuesta

19

Si está utilizando --delete en su comando rsync, el problema con llamar grep -E -v '/$' es que va a omitir las líneas de información como :

deleting folder1/ 
deleting folder2/ 
deleting folder3/folder4/ 

Si usted está haciendo una copia de seguridad y la carpeta remota ha sido completamente aniquilado por X razón, también acabará con su carpeta local porque no ve las líneas de borrado.

omitir la carpeta ya existente, pero mantener las líneas eliminación, al mismo tiempo, puede utilizar esta expresión:

rsync -av --delete remote_folder local_folder | grep -E '^deleting|[^/]$' 
+0

Buena respuesta. Para la sincronización de archivos, me gusta hacer una ejecución en seco antes de ejecutar el comando, así que utilizo la opción '-n'. Para la legibilidad, he modificado grep regex para incluir la línea en blanco, 'rsync -av --delete folder_carpeta_carpeta_local | grep -E '^ eliminando | [^ /] $ |^$' ' –

11

Me sentiría tentado a filtrar utilizando tuberías a través de grep -E -v '/ $' que utiliza un ancla de final de línea para eliminar las líneas que terminan con una barra (un directorio).

Aquí es la sesión de terminal de demostración donde he comprobado ...

[email protected]:~$ mkdir rsynctest 
[email protected]:~$ cd rsynctest/ 
[email protected]:~/rsynctest$ mkdir 1 
[email protected]:~/rsynctest$ mkdir 2 
[email protected]:~/rsynctest$ mkdir -p 1/first 1/second 
[email protected]:~/rsynctest$ touch 1/first/file1 
[email protected]:~/rsynctest$ touch 1/first/file2 
[email protected]:~/rsynctest$ touch 1/second/file3 
[email protected]:~/rsynctest$ touch 1/second/file4 

[email protected]:~/rsynctest$ rsync -r -v 1/ 2 
sending incremental file list 
first/ 
first/file1 
first/file2 
second/ 
second/file3 
second/file4 

sent 294 bytes received 96 bytes 780.00 bytes/sec 
total size is 0 speedup is 0.00 


[email protected]:~/rsynctest$ rsync -r -v 1/ 2 | grep -E -v '/$' 
sending incremental file list 
first/file1 
first/file2 
second/file3 
second/file4 

sent 294 bytes received 96 bytes 780.00 bytes/sec 
total size is 0 speedup is 0.00 
+5

llegué a la misma conclusión a mí mismo. Simplemente parece idiota que rsync no tenga un interruptor para hacer esto. ¡Gracias por la sugerencia! –

Cuestiones relacionadas