with recursive files examples directories linux shell unix wildcard rsync

linux - recursive - rsync no sincroniza el archivo.htaccess



rsync recursive (5)

Estoy tratando de sincronizar el directorio A del servidor1 con el directorio B del servidor2.

Sentado en el directorio A del servidor1, ejecuté los siguientes comandos.

rsync -av * server2::sharename/B

pero lo interesante es que sincroniza todos los archivos y directorios excepto .htaccess o cualquier archivo oculto en el directorio A. Todos los archivos ocultos dentro de los subdirectorios se sincronizan.

También probé el siguiente comando:

rsync -av --include=".htaccess" * server2::sharename/B

pero los resultados son los mismos

Alguna idea de por qué los archivos ocultos de un directorio no se sincronizan y cómo solucionarlo. Me estoy ejecutando como usuario root.

Gracias


Creo que el problema se debe a la expansión del comodín shell. Utilizar . en lugar de estrella.

Considere el siguiente contenido de directorio de ejemplo

$ ls -a . . .. .htaccess a.html z.js

La expansión del comodín de la shell traduce la lista de argumentos que obtiene el programa rsync

-av * server2::sharename/B

dentro

-av a.html z.js server2::sharename/B

antes de que el comando comience a ejecutarse.


Esto se debe al hecho de que * se expande por defecto a todos los archivos en el directorio de trabajo actual, excepto los archivos cuyo nombre comienza con un punto. Por lo tanto, rsync nunca recibe estos archivos como argumentos.

Puedes pasar que denota el directorio de trabajo actual para rsync :

rsync -av . server2::sharename/B

De esta forma, rsync buscará archivos para transferir en el directorio de trabajo actual en lugar de buscarlos en lo que * expande.

Alternativamente, puede usar el siguiente comando para hacer que * expanda a todos los archivos, incluidos los que comienzan con un punto:

shopt -s dotglob

Ver también página de compras .


Para cualquiera que intente sincronizar directorios entre servidores (incluidos todos los archivos ocultos), por ejemplo, sincronizar somedirA en source-server de somedirB con somedirB en un servidor de destino, intente esto :

rsync -avz -e ssh --progress user@source-server:/somedirA/ somedirB/

Tenga en cuenta las barras al final de ambas rutas. ¡Cualquier otra sintaxis puede conducir a resultados inesperados!

Además, para mí es más fácil realizar comandos de rsync desde el servidor de destino, porque es más fácil asegurarme de que tengo acceso de escritura adecuado (es decir, podría necesitar agregar sudo al comando anterior).

Probablemente sea evidente, pero obviamente su usuario remoto también necesita acceso de lectura a somedirA en su servidor de origen. :)


Tuve el mismo problema.

Para mí, cuando hice el siguiente comando, los archivos ocultos no obtuvieron rsync''ed

rsync -av /home/user1 server02:/home/user1

Pero cuando agregué las barras al final de las rutas, los archivos ocultos se sincronizaron.

rsync -av /home/user1/ server02:/home/user1/

Tenga en cuenta las barras al final de las rutas , ya que Brian Lacy dijo que las barras son la clave. No tengo la reputación de comentar sobre su publicación o lo hubiera hecho.


* Dile a rsynch que no sincronice los archivos ocultos. ¿Has intentado omitirlo?