Sincronizar um diretório local com um diretório remoto no Linux
14
Eu tenho uma pasta com alguns arquivos e algum espaço em um servidor web. Eu 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, para que isso ocorra silenciosamente.
A ferramenta de escolha para sincronização unidirecional é o rsync, e a ferramenta de escolha para sincronização bidirecional é o Unison . Ambos exigem que o executável esteja disponível nos dois lados. Se você pode tornar um arquivo executável no lado do servidor, descarte o binário uníssono e torne-o executável.
Se você possui Linux, * BSD, Solaris ou Mac OS X localmente, provavelmente pode usar um sistema de arquivos FUSE para fazer com que o espaço do servidor da Web apareça como um sistema de arquivos local - o sshfs deve funcionar, pois você parece ter acesso ssh. Em seguida, use uníssono "localmente".
Observe também que a maioria dos softwares de controle de versão (CVS / Subversion, bem como VCS distribuído) tem sincronização como um recurso a propósito (faça check-in em uma máquina e saia na outra).
Para bidirectionally sincronizar um diretório /src/fooem hostAque /dest/fooem hostB, incluindo todos os sub-diretórios, você deve executar esses comandos em hostA:
O Rsync não está adaptado à sincronização bidirecional. Por um lado, não irá avisá-lo se houver um conflito. Use o Unison, é a ferramenta certa para o trabalho.
Gilles 'SO- stop be evil'
1
Isso quebra horrivelmente se o servidor A estiver no futuro a partir do servidor B. No meu caso, estou 13 horas à frente do servidor remoto.
Tim Post
1
Sempre que você precisar de uma sincronização entre duas pastas, rsyncé uma ótima opção 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 baseados em FUSE e libcurl.
Com o curlFtpFs, é muito fácil incluir uma pasta ftp remota no seu sistema de arquivos.
Este é um pequeno exemplo que mostra o uso de ambas as ferramentas:
Se você não deseja esse esforço para instalar o curlFtpFS e apenas deseja manter alguns arquivos sincronizados, existem muitas ferramentas de ftp que oferecem esses recursos de sincronização:
FTPSync.pl - script PERL simples para manter sincronizado um diretório local e um remoto
weex - um cliente FTP não interativo para atualização de páginas da web
filezilla - cliente de FTP da GUI com muitos recursos
1. Rsync não é bom para sincronização bidirecional ; use o Unison. 2. De onde veio o FTP? a menção de chaves RSA na pergunta sugere ssh (e, portanto, sshfs).
Gilles 'SO- stop be evil'
Você está certo, o FTP não é mencionado na pergunta. Para ser sincero, acho que foi uma combinação de "espaço na web" e "é apenas espaço". e um pouco do meu cansaço ontem.
Sempre que você precisar de uma sincronização entre duas pastas,
rsync
é uma ótima opção flexível. O problema é que o rsync não suporta o protocolo ftp. Uma boa solução para isso é curlFtpFS :Com o curlFtpFs, é muito fácil incluir uma pasta ftp remota no seu sistema de arquivos.
Este é um pequeno exemplo que mostra o uso de ambas as ferramentas:
Leia a página de manual para mais informações.
Se você não deseja esse esforço para instalar o curlFtpFS e apenas deseja manter alguns arquivos sincronizados, existem muitas ferramentas de ftp que oferecem esses recursos de sincronização:
fonte