web-development-kb-pt.site

Sincronize um diretório local com um diretório remoto no Linux

Tenho uma pasta com alguns arquivos e algum espaço em um servidor da web. Quero fazer uma sincronização bidirecional entre a pasta local e a remota no linux, apenas na hora da modificação. Como eu faço isso? btw não consigo instalar nada no servidor, para todos os efeitos, é apenas espaço.

Nota: Eu já tenho pares de chaves rsa configurados, então isso pode acontecer silenciosamente.

14
Andrew Redd

A ferramenta de escolha para sincronização unidirecional é rsync, e a ferramenta de escolha para sincronização bidirecional é nison . Ambos exigem que o executável esteja disponível em ambos os lados. Se você pode tornar um arquivo executável no lado do servidor, elimine o binário unison e torne-o executável.

Se você tem Linux, * BSD, Solaris ou Mac OS X localmente, provavelmente pode usar um sistema de arquivos Fuse para fazer o espaço do servidor web aparecer como um sistema de arquivos local - sshfs deve funcionar já que você parece ter acesso ssh. Em seguida, use o uníssono “localmente”.

Observe também que a maioria dos softwares de controle de versão (CVS/Subversion, bem como VCS distribuído) tem a sincronização como um recurso by-the-way (check-in em uma máquina e check-out na outra).

12

Se estiver instalado no servidor, use rsync é construído exatamente para esse trabalho.

Para obtê-lo bidirecional, faça isso (citação de http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777 ):

Para sincronizar bidirecionalmente um diretório /src/foo em hostA a /dest/foo em hostB, incluindo todos os subdiretórios, você executaria estes comandos em hostA:

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

O primeiro comando envia todos os arquivos mais novos em hostA para hostB.

O segundo comando irá puxar todos os arquivos que são mais novos em hostB para hostA. As opções críticas são:

ao copiar, você deve preservar os tempos de modificação do arquivo. -a faz isso e outras coisas;

Se você quiser preservar apenas os tempos de modificação, use -t em vez de.

Para pular quaisquer arquivos mais recentes no destino: -u faz isso.

4
tante

Cada vez que você precisa de uma sincronização entre duas pastas, rsync é uma grande escolha flexível. O problema é que o rsync não suporta o protocolo ftp. Uma boa solução para isso é curlFtpFS :

CurlFtpFS é um sistema de arquivos para acessar hosts FTP baseado em Fuse e libcurl.

Com curlFtpFs muito fácil incluir uma pasta ftp remota em seu sistema de arquivos.

Este é um pequeno exemplo que mostra o uso de ambas as ferramentas:

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

Leia a página de manual para mais informações.

Se você não quiser tanto esforço para instalar o curlFtpFS e quiser apenas manter alguns arquivos sincronizados, existem várias ferramentas de ftp que oferecem esses recursos de sincronização:

  • FTPSync.pl - script Perl simples para manter um diretório local e um remoto em sincronia
  • weex - um cliente FTP não interativo para atualizar páginas da web
  • filezilla - Cliente de FTP GUI com muitos recursos
  • ...
1
echox