15 Cópia de arquivo com RSync #
Hoje em dia, um usuário comum possui vários computadores: em casa e no local de trabalho, um laptop, um smartphone ou um tablet. Isso torna muito mais importante a tarefa de manter os arquivos e documentos sincronizados entre vários dispositivos.
Antes de começar a usar uma ferramenta de sincronização, você deve se familiarizar com os recursos e as funcionalidades. Faça backup de seus arquivos importantes.
15.1 Visão geral conceitual #
Para sincronizar uma grande quantidade de dados em uma conexão de rede lenta, o Rsync oferece um método confiável para transmitir apenas as mudanças nos arquivos. Isso não se aplica apenas a arquivos de texto, mas também a arquivos binários. Para detectar as diferenças entre os arquivos, o Rsync os subdivide em blocos e calcula seus checksums.
A detecção de mudanças requer uma determinada capacidade de processamento. Portanto, verifique se as máquinas em ambas as extremidades têm recursos suficientes, incluindo memória RAM.
O Rsync pode ser útil principalmente quando grandes quantidades de dados que contêm apenas pequenas mudanças precisam ser transmitidas regularmente. Geralmente, esse é o caso quando se trabalha com backups. O Rsync também pode ser útil para espelhamento de servidores para testes que armazenam árvores completas de diretórios de servidores Web em um servidor Web na DMZ.
Apesar do nome, o Rsync não é uma ferramenta de sincronização. Rsync é uma ferramenta que copia dados apenas em uma direção de cada vez. Ele não faz e não pode fazer o contrário. Se você precisa de uma ferramenta bidirecional capaz de sincronizar a origem e o destino, use o Csync.
15.2 Sintaxe básica #
O Rsync é uma ferramenta de linha de comando que tem a seguinte sintaxe básica:
rsync [OPTION] SOURCE [SOURCE]... DEST
Você pode usar o Rsync em qualquer máquina local ou remota, desde que tenha acesso e permissões de gravação. É possível ter várias entradas SOURCE. Os espaços reservados SOURCE e DEST podem ser caminhos, URLs ou ambos.
Veja a seguir as opções mais comuns do Rsync:
-v
Gera um texto mais verboso
-a
Modo de arquivamento: copia arquivos recursivamente e preserva marcações de horário, propriedade de usuário/grupo, permissões de arquivos e links simbólicos
-z
Comprime os dados transmitidos
Ao trabalhar com o Rsync, você deve prestar atenção especial às barras à direita. Uma barra à direita após o diretório indica o conteúdo do diretório. Nenhuma barra à direita indica o próprio diretório.
15.3 Copiando arquivos e diretórios localmente #
A seguinte descrição pressupõe que o usuário atual tem permissões de gravação para o diretório /var/backup
. Para copiar um único arquivo de um diretório em sua máquina para outro caminho, use o seguinte comando:
>
rsync
-avz backup.tar.xz /var/backup/
O arquivo backup.tar.xz
é copiado para /var/backup/
. O caminho absoluto é /var/backup/backup.tar.xz
.
Lembre-se de adicionar a barra à direita após o diretório /var/backup/
. Se você não inserir a barra, o arquivo backup.tar.xz
será copiado para /var/backup
(arquivo), e não dentro do diretório /var/backup/
.
Copiar um diretório é semelhante a copiar um arquivo único. O seguinte exemplo copia o diretório tux/
e seu conteúdo para o diretório /var/backup/
:
>
rsync
-avz tux /var/backup/
Localize a cópia no caminho absoluto /var/backup/tux/
.
15.4 Copiando arquivos e diretórios remotamente #
A ferramenta Rsync é necessária em ambas as máquinas. Para copiar arquivos de ou para diretórios remotos, é necessário um endereço IP ou um nome de domínio. Um nome de usuário será opcional caso os nomes de usuários atuais na máquina local e remota sejam os mesmos.
Para copiar o arquivo file.tar.xz
de seu host local para o host remoto 192.168.1.1
com os mesmos usuários (sendo local e remoto), use o seguinte comando:
>
rsync
-avz file.tar.xz tux@192.168.1.1:
Dependendo do que você preferir, estes comandos também serão possíveis e equivalentes:
>
rsync
-avz file.tar.xz 192.168.1.1:~>
rsync
-avz file.tar.xz 192.168.1.1:/home/tux
Em todos os casos com configuração padrão, será solicitado para você inserir a frase secreta do usuário remoto. Esse comando copia o file.tar.xz
para o diretório pessoal do usuário tux
(normalmente, /home/tux
).
Copiar um diretório remotamente é semelhante a copiar um diretório localmente. O seguinte exemplo copia o diretório tux/
e seu conteúdo para o diretório remoto /var/backup/
no host 192.168.1.1
:
>
rsync
-avz tux 192.168.1.1:/var/backup/
Supondo que você tenha permissões de gravação no host 192.168.1.1
, poderá encontrar a cópia no caminho absoluto /var/backup/tux
.
15.5 Configurando e usando um servidor Rsync #
O Rsync pode ser executado como um daemon (rsyncd
) que escuta na porta padrão 873 para conexões recebidas. Esse daemon pode receber “destinos de cópia”.
A descrição a seguir explica como criar um servidor Rsync em jupiter
com um destino de backup. Esse destino pode ser usado para armazenar os backups. Para criar um servidor Rsync, faça o seguinte:
No jupiter, crie um diretório para armazenar todos os seus arquivos de backup. Neste exemplo, usamos
/var/backup
:#
mkdir
/var/backupEspecifique a propriedade. Neste caso, o diretório pertence ao usuário
tux
no grupousers
:#
chown
tux.users /var/backupConfigure o daemon rsyncd.
Separamos o arquivo de configuração em um arquivo principal e determinados “módulos” que contêm o destino de backup. Isso facilita adicionar outros destinos futuramente. É possível armazenas valores globais nos arquivos
/etc/rsyncd.d/*.inc
, enquanto os módulos são armazenados nos arquivos/etc/rsyncd.d/*.conf
:Crie um diretório
/etc/rsyncd.d/
:#
mkdir
/etc/rsyncd.d/No arquivo de configuração principal
/etc/rsyncd.conf
, adicione as seguintes linhas:# rsyncd.conf main configuration file log file = /var/log/rsync.log pid file = /var/lock/rsync.lock &merge /etc/rsyncd.d 1 &include /etc/rsyncd.d 2
Crie o módulo (destino de backup) no arquivo
/etc/rsyncd.d/backup.conf
com as seguintes linhas:# backup.conf: backup module [backup] 1 uid = tux 2 gid = users 2 path = /var/backup 3 auth users = tux 4 secrets file = /etc/rsyncd.secrets 5 comment = Our backup target
O destino de backup. Você pode usar qualquer nome que desejar. No entanto, convém nomear um destino de acordo com sua finalidade e usar o mesmo nome em seu arquivo
*.conf
.Especifica o nome de usuário ou nome do grupo que é usado quando a transferência de arquivos é feita.
Define o caminho para armazenar os backups (da Passo 1).
Especifica uma lista separada por vírgulas de usuários permitidos. Em sua forma mais simples, ela contém os nomes de usuário que têm permissão para conectar-se a este módulo. Em nosso caso, apenas o usuário
tux
é permitido.Especifica o caminho de um arquivo que contém as linhas com os nomes de usuário e as senhas simples.
Crie o arquivo
/etc/rsyncd.secrets
com o seguinte conteúdo e substitua PASSPHRASE:# user:passwd tux:PASSPHRASE
Verifique se o arquivo pode ser lido apenas por
root
:#
chmod
0600 /etc/rsyncd.secrets
Inicie e habilite o daemon rsyncd com:
#
systemctl
enable rsyncd#
systemctl
start rsyncdTeste o acesso ao servidor Rsync:
>
rsync
jupiter::Você deve ver uma resposta parecida com esta:
backup Our backup target
Do contrário, verifique o arquivo de configuração, as configurações de rede e de firewall.
As etapas acima criam um servidor Rsync que agora pode ser usado para armazenar backups. O exemplo também cria um arquivo de registro listando todas as conexões. Esse arquivo é armazenado em /var/log/rsyncd.log
. Isso é útil para depurar suas transferências.
Para listar o conteúdo do destino de backup, use o seguinte comando:
>
rsync -avz jupiter::backup
Esse comando lista todos os arquivos presentes no diretório /var/backup
no servidor. Essa solicitação também é registrada no arquivo de registro /var/log/rsyncd.log
. Para iniciar uma transferência real, especifique um diretório de origem. Use .
para o diretório atual. Por exemplo, o comando a seguir copia o diretório atual para o servidor de backup Rsync:
>
rsync -avz . jupiter::backup
Por padrão, o Rsync não apaga arquivos e diretórios quando ele é executado. Para habilitar a exclusão, a opção adicional --delete
deve ser especificada. Para garantir que nenhum arquivo novo seja apagado, use a opção --update
como alternativa. Qualquer conflito ocorrido deve ser resolvido manualmente.
15.6 Mais informações #
- Csync
Ferramenta de sincronização bidirecional de arquivos. Consulte https://csync.org/.
- RSnapshot
Cria backups incrementais. Consulte https://rsnapshot.org.
- Unison
Uma ferramenta de sincronização de arquivos semelhante ao CSync, mas com uma interface gráfica. Consulte https://www.seas.upenn.edu/~bcpierce/unison/.
- Rear
Uma estrutura de recuperação de desastre. Consulte o Administration Guide of the SUSE Linux Enterprise High Availability, chapter Disaster Recovery with Rear (Relax-and-Recover).