Sincronize pastas remotas no Linux

4

Qual é o caminho mais simples para a sincronização incremental unidirecional de uma pasta presente em um sistema Linux.

+1 para usar a linha de comando. +2 por não usar o rsync (parece ter alguns problemas no meu sistema.)

    
por Lakshman Prasad 17.07.2009 / 11:47

4 respostas

7

O csync é um sincronizador de arquivos especialmente projetado para você, o usuário normal.

O csync é uma biblioteca e fornece o cliente de linha de comando por padrão. É sem servidor e permite a sincronização através de sftp ou samba .

Exemplos de uso:

csync /home/csync smb://csync:[email protected]/Users/csync
csync /home/csync sftp://[email protected]:2222/home/csync
    
por 17.07.2009 / 11:50
7

Acho que você deve resolver seus problemas com o rsync, que é a "ferramenta de sincronização" testada e verdadeira para os unix.

rsync -uav --delete /loal/path example.com:/remote/path

Observação: Para sincronização bidirecional, você também pode usar uníssono como csync .

    
por 17.07.2009 / 11:49
2

É assim que eu faria uma sincronização unidirecional com ferramentas simples.

No início, tar todo o conjunto de arquivos e copie-os para o ponto de destino.
Além disso, configure um marcador no diretório base.

touch /Source/base/directory/last-sync-time.txt

Agora, queremos continuar sincronizando da origem ao destino.

No próximo intervalo de tempo para sincronização de encaminhamento (da origem para o destino),

# The backup script
cd /Source/base/directory
tar cfj -N ./last-sync-time.txt backup.tar.bz2 .
scp backup.tar.bz2 user@backup-server:/Backup/Directory/
touch /Source/base/directory/last-sync-time.txt
rm -f backup.tar.bz2
  1. O -N ./filename diz ao tar para arquivar somente arquivos modificados ou criados depois que filename foi modificado / criado.
    • O uso de uma referência local para o horário confirma que você não comete erros; Se um backup não foi feito por algum motivo, o próximo acumulará
    • Você pode configurar esse script como um cronjob entrada na máquina de origem
    • Estou assumindo que você usará scp com autenticação de chave pública
    • Além disso, supondo que você possa alcançar o backup-server sempre que esse script for emitido.
    • Para ser mais seguro, você pode adicionar verificações para confirmar que o backup foi armazenado e, em seguida, emitir o comando touch
    • Você também pode optar por inserir comandos para expandir os backups sobrepostos aos anteriores no ponto de destino; Ou mantenha arquivos tar.bz2 incrementais.
por 17.07.2009 / 12:15
0

Eu uso este script curto para monitorar e sincronizar continuamente um diretório com a pasta sftp remota;

#!/bin/sh
dir1=/home/user/folder
 while inotifywait -qqre modify "$dir1";
 do
    csync /home/user/folder sftp://remoteuser:remotepass@remoteaddress:remoteport/remotefolderpath
done
    
por 24.10.2015 / 09:55