Entonces, tengo un problema aparentemente simple, pero hasta ahora no he encontrado una solución: quiero excluir el directorio superior de un rsync, sin dejar de sincronizar a todos sus hijos. El problema particular es que no tengo permiso para modificar los tiempos del directorio superior, pero quiero que todos los niños tengan tiempos de sincronización correctos.
El comando rsync que estoy usando es el siguiente:
rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/
y se server.example.com:/usr/local/directory/
ve así:
drwxrws--- 5 root staff 24576 Jul 9 15:00 .
(mi usuario local es miembro de staff
)
Cuando ejecuto rsync, aparece el siguiente error:
rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23
Esta es la versión 3.0.9 en la máquina local y 3.0.7 en la remota, ambas máquinas que ejecutan Debian.
Respuestas:
Creo que las reglas de filtro de rsync no pueden coincidir con el directorio de nivel superior, por lo que siempre está sincronizado. Una solución alternativa es sincronizar todos los archivos dentro de este directorio en lugar del directorio en sí.
Agregue
.[!.]*
después*
si tiene archivos de puntos en el directorio superior y..?*
si tiene nombres de archivos que comienzan con dos puntos.fuente
*
fue que--delete
no eliminó ningún archivo, ya que no formaban parte de la búsqueda.