Sincronice un directorio local con un directorio remoto en Linux
14
Tengo una carpeta con algunos archivos y algo de espacio en un servidor web. Quiero hacer una sincronización bidireccional entre la carpeta local y la remota en Linux, solo en el momento de la modificación. ¿Cómo hago esto? Por cierto, no puedo instalar nada en el servidor, para todos los efectos es solo espacio.
Nota: Ya tengo configurados pares de claves rsa, para que pueda suceder en silencio.
La herramienta de elección para la sincronización unidireccional es rsync, y la herramienta de elección para la sincronización bidireccional es Unison . Ambos requieren que el ejecutable esté disponible en ambos lados. Si puede hacer que un archivo sea ejecutable en el lado del servidor, suelte el binario al unísono y hágalo ejecutable.
Si tiene Linux, * BSD, Solaris o Mac OS X localmente, probablemente pueda usar un sistema de archivos FUSE para que el espacio del servidor web aparezca como un sistema de archivos local: sshfs debería funcionar ya que parece tener acceso ssh. Luego use al unísono "localmente".
También tenga en cuenta que la mayoría del software de control de versiones (CVS / Subversion, así como VCS distribuido) tienen sincronización como una función por cierto (verifique en una máquina y salga en la otra).
Para sincronizar bidireccionalmente un directorio /src/fooen el hostAque /dest/fooel hostB, incluyendo todos los subdirectorios, debe ejecutar estos comandos en hostA:
Rsync no está adaptado a la sincronización bidireccional en absoluto. Por un lado, no te avisará si hay un conflicto. Use Unison en su lugar, es la herramienta adecuada para el trabajo.
Gilles 'SO- deja de ser malvado'
1
Esto se rompe horriblemente si el servidor A está en el futuro del servidor B. En mi caso, estoy 13 horas por delante del servidor remoto.
Tim Post
1
Cada vez que necesite una sincronización entre dos carpetas rsynces una excelente opción flexible. El problema es que rsync no admitirá el protocolo ftp. Una buena solución para esto es curlFtpFS :
CurlFtpFS es un sistema de archivos para acceder a hosts FTP basados en FUSE y libcurl.
Con curlFtpFs es bastante fácil incluir una carpeta ftp remota en su sistema de archivos.
Este es un breve ejemplo que muestra el uso de ambas herramientas:
Si no desea ese esfuerzo para instalar curlFtpFS y solo desea mantener algunos archivos sincronizados, hay muchas herramientas ftp que ofrecen tales funciones de sincronización:
FTPSync.pl : secuencia de comandos PERL simple para mantener sincronizados un directorio local y uno remoto
weex : un cliente FTP no interactivo para actualizar páginas web
1. Rsync no es bueno para la sincronización bidireccional , use Unison en su lugar. 2. ¿De dónde vino FTP? la mención de claves RSA en la pregunta sugiere ssh (y, por lo tanto, sshfs).
Gilles 'SO- deja de ser malvado'
Tienes razón, FTP no se menciona en la pregunta. Para ser honesto, creo que fue una combinación de "espacio web" y "es solo espacio". y un poco de mi fatiga ayer.
Cada vez que necesite una sincronización entre dos carpetas
rsync
es una excelente opción flexible. El problema es que rsync no admitirá el protocolo ftp. Una buena solución para esto es curlFtpFS :Con curlFtpFs es bastante fácil incluir una carpeta ftp remota en su sistema de archivos.
Este es un breve ejemplo que muestra el uso de ambas herramientas:
Lea la página de manual para más información.
Si no desea ese esfuerzo para instalar curlFtpFS y solo desea mantener algunos archivos sincronizados, hay muchas herramientas ftp que ofrecen tales funciones de sincronización:
fuente