it-swarm-es.tech

Sincronizar un directorio local con un directorio remoto en Linux

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 los pares de claves rsa, de modo que pueda suceder en silencio.

14
Andrew Redd

La herramienta elegida para la sincronización unidireccional es rsync, y la herramienta elegida para la sincronización bidireccional es nison . Ambos requieren que el ejecutable esté disponible en ambos lados. Si puede hacer que un archivo sea ejecutable en el lado del servidor, elimine el binario 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 hacer que el espacio del servidor web aparezca como un sistema de archivos local - sshfs debería funciona ya que parece tener acceso ssh. Luego use unísono "localmente".

También tenga en cuenta que la mayoría del software de control de versiones (CVS/Subversion y VCS distribuido) tienen la sincronización como una característica adicional (regístrese en una máquina y verifique en la otra).

Si está instalado en el servidor, use rsync su compilación exactamente para ese trabajo.

Para hacerlo bidireccional, haga esto (cita de http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777 ):

Para sincronizar bidireccionalmente un directorio /src/foo en hostA a /dest/foo en hostB, incluidos todos los subdirectorios, ejecutaría estos comandos en hostA:

rsync -auz /src/foo hostB:/dest 
rsync -auz hostB:/dest/foo /src

El primer comando empuja todos los archivos que son más recientes en hostA a hostB.

El segundo comando extraerá todos los archivos que son más recientes en hostB a hostA. Las opciones críticas son:

al copiar, debe conservar los tiempos de modificación del archivo. -a hace esto y otras cosas;

Si desea conservar solo los tiempos de modificación, use -t en su lugar.

Para omitir los archivos más recientes en el destino: -u Haz esto.

4
tante

Cada vez que necesite una sincronización entre dos carpetas rsync es una excelente opción flexible. El problema es que rsync no admite 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:

curlftpfs -r -s ftp.foobar.com /foo
rsync -a /foo/ /bar
umount /foo

Lea la página de manual para obtener más información.

Si no desea tanto esfuerzo para instalar curlFtpFS y solo desea mantener algunos archivos sincronizados, hay muchas herramientas de ftp que ofrecen tales funciones de sincronización:

  • FTPSync.pl - script Perl simple para mantener sincronizados un directorio local y uno remoto
  • weex - un cliente FTP no interactivo para actualizar páginas web
  • filezilla - Cliente FTP GUI con muchas características
  • ...
1
echox