Este é o comando fssync que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
fssync - ferramenta de sincronização do sistema de arquivos (unidirecional, via SSH)
SINOPSE
fssync -d db -r raiz [opção...] hospedeiro
DESCRIÇÃO
fssync é uma ferramenta de sincronização de arquivos unilateral que rastreia inodes e mantém um local
banco de dados de arquivos que estão no lado remoto, tornando-o capaz de:
· Lidar de forma eficiente com um grande número de diretórios / arquivos
· Detectar renomeações / movimentos e links físicos
Tem como objetivo minimizar o tráfego de rede e sincronizar todos os detalhes de um sistema de arquivos:
· Todos os tipos de inode: arquivo, dir, bloco / caractere / fifo, socket, link simbólico
· Preservar links físicos
· Hora de modificação, propriedade / permissão / ACL, atributos estendidos
· Arquivos esparsos
Outras características:
· Pode ser configurado para excluir arquivos da sincronização
· Fssync pode ser interrompido e retomado a qualquer momento, tornando-o tolerante a falhas aleatórias
(por exemplo, erro de rede)
· Algoritmo para sincronizar o conteúdo do arquivo é projetado para lidar com arquivos grandes, como imagens VM
de forma eficiente, atualizando blocos modificados de tamanho fixo no local
O uso principal do fssync é evitar a perda de dados em caso de falha de hardware, onde RAID1 é
não é possível (por exemplo, em laptops).
On Btrfs [1] sistemas de arquivos, fssync é uma alternativa útil para btrfs enviar (E receber)
comandos, graças aos recursos de filtragem. Isso pode ser combinado com o instantâneo Btrfs
no destino para uma solução de backup completa.
USO
Use fssync --Socorro para obter a lista completa de opções.
A coisa mais importante a lembrar é que o banco de dados local deve corresponder exatamente ao que
no host de destino:
· Os arquivos copiados no host de destino não devem ser modificados. E nada deveria
ser criado manualmente dentro dos diretórios de destino. Se você ainda deseja acessar dados em
host remoto, você deve fazer isso por meio de montagens de ligação somente leitura (requer Linux> =
· Você deve ter 1 banco de dados por destino, se você planeja ter várias cópias do mesmo
diretório de origem.
Olhe para -c opção se você quer saber se seu banco de dados corresponde ao diretório de destino.
Primeira execução do fssync:
· A maneira mais fácil é deixar o fssync fazer tudo. Especifique um caminho de arquivo não existente para -d
opção e um diretório de destino vazio ou inexistente (ver -R opção). fssync irá
cria automaticamente o banco de dados e copia todos os dirs / arquivos para o host remoto.
· Uma maneira mais rápida pode ser fazer a cópia inicial por outros meios, como uma cópia bruta de um
partição. Se você tiver certeza absoluta de que a origem e o destino são exatamente os mesmos,
você pode inicializar o banco de dados especificando - como hospedeiro. Se os números de inode forem iguais
em ambos os lados, que é o caso se os dados foram copiados no nível do bloco, você pode modificar o
partição de origem enquanto você está inicializando o banco de dados no destino, e volte
o banco de dados localmente.
Um exemplo de wrapper em torno de fssync, com um filtro, pode ser encontrado em exemplos / fssync_home
O fssync nunca desce diretórios em outros sistemas de arquivos. Inodes mascarados por pontos de montagem
também são ignorados, então eles devem ser desmontados temporariamente se você quiser que eles sejam
sincronizado. O mesmo resultado pode ser obtido sincronizando a partir de uma montagem de ligação.
Veja também o NENHUM cifra comutação [2] patch se você não precisa de criptografia e deseja
acelerar sua conexão SSH.
COMO IT FUNCIONA
fssync mantém uma única tabela SQLite de todos os diretórios / arquivos que estão no lado remoto. Cada
linha corresponde a um caminho, com seu inode (no lado local), outros metadados (no lado remoto) e um
verificado bandeira.
Quando em execução, fssync itera recursivamente por meio de todos os diretórios / arquivos locais e para cada caminho
que não é ignorado (veja -f opção), ele consulta o banco de dados para decidir o que fazer. Se já
verificado, o caminho é ignorado imediatamente. Quando um caminho é sincronizado, ele é marcado como
verificado. No final, todas as linhas que não são verificado corresponde a caminhos que não existem
mais. Uma vez que eles são excluídos no lado remoto, todos verificado sinalizadores são redefinidos.
Falha tolerância
Na verdade, o fssync não exige que o banco de dados corresponda perfeitamente ao destino. Isto
tolera algumas diferenças a fim de recuperar qualquer sincronização interrompida causada por um
falha de rede, erro de operação de arquivo ou qualquer coisa diferente de falha do sistema operacional
do host local (ou algo semelhante, como uma falha de energia).
Na maioria dos casos, isso é feito pelo host remoto, que cria automaticamente (ou substitui)
um inode do tipo esperado, se necessário. A única exceção é que o controle remoto
nunca exclua um diretório não vazio por conta própria. Para os casos mais complexos, o fssync journaliza
a operação no banco de dados: em caso de falha, o fssync poderá se recuperar no próximo
sincronizar.
Corrida condições
Uma condição de corrida significa que outros processos no host local estão modificando inodes que
fssync está sincronizando. O fssync lida com qualquer tipo de condição de corrida. Na verdade, o fssync tem
nada a fazer na maioria dos casos.
Quando ocorre uma condição de corrida, o fssync não garante que os dados remotos estejam em um
estado consistente. Cada sincronização sempre corrige as inconsistências existentes, mas pode introduzir
outros, portanto, fssync não é adequado para backup dinâmico de bancos de dados.
Com o Btrfs, você pode obter consistência fazendo instantâneos no lado da origem.
SEMELHANTE PROJETOS
A ideia de manter um banco de dados local realmente vem de csync2 [3]. eu estava prestes a
adotei quando percebi que realmente precisava de uma ferramenta que sempre detectasse renomeações / movimentos de
arquivos grandes. É por isso que vejo o fssync como uma reescrita parcial do csync2, com rastreamento de inode e
sem sincronização bidirecional. O banco de dados local realmente torna fssync & csync2
mais rápido do que o conhecido rsync [4].
Use fssync online usando serviços onworks.net