Comandos do Linux e Unix: Sistema; Processos; Sistema de Arquivos; Rede; SSH SCP; VPN com SSH; RSYNC; SUDO; Arquivos Encriptados; Partições Encriptadas; Certificados SSL; CVS; SVN; Comando Úteis; Instalar Software; Converter Mídia; Impressão; Banco de Dados; Quota de Disco; Shells; Scripting; Programação

RSYNC

Rsync pode quase substituir completamente o cp e o scp, além disso transferências interruptas são reiniciadas eficientemente. Uma barra invertida (e mesmo a ausência) tem sentidos diferentes, a man page é boa… aqui alguns exemplos:
Cópia os diretórios com conteúdo completo:

# rsync -a /home/colin/ /backup/colin/                # "archive" mode. ex. mantém o mesmo
    # rsync -a /var/ /var_bak/
    # rsync -aR --delete-during /home/user/ /backup/      # usa relativo (veja abaixo)
    # /opt/local/bin/rsync -azv --iconv=UTF-8-MAC,UTF-8 ~/Music/flac/ me@server:/dst/
                               # converte nomes de arquivos (filenames) UTF8 do OSX para UTF8 do Windows

O mesmo que o anterior, mas na rede e com compressão. Rsync utiliza SSH para o transporte por padrão e utilizará a chave ssh se elas forem definidas. Utilize “:” da mesma forma que no SCP. Uma copia remota típica:

# rsync -axSRzv /home/user/ user@server:/backup/user/ # Cópia para um lugar remoto
    # rsync -a 'user@server:My\ Documents' My\ Documents  # Quote AND escape spaces para o shell remoto

Exclui qualquer diretório tmp dentro de /home/user/ e mantém a hierarquia de pastas (diretórios) relativa, que é o diretório remoto terá a estrutura /backup/home/user/. Isso é tipicamente utilizado para backups.

# rsync -azR --exclude=tmp/ /home/user/ user@server:/backup/

Utilize a porta 20022 para a conexão ssh:

# rsync -az -e 'ssh -p 20022' /home/colin/ user@server:/backup/colin/

Utilizando a daemon rsync (utilizado com “::”) é muito mais rápido, mas não criptografado no ssh. O local do /backup é definido pela configuração em /etc/rsyncd.conf. A variável RSYNC_PASSWORD pode ser definida para evitar a necessidade de entrar com a senha manualmente.

# rsync -axSRz /home/ ruser@hostname::rmodule/backup/
    # rsync -axSRz ruser@hostname::rmodule/backup/ /home/    # To copy back

Algumas opções importantes:

  • -a, --archive       modo de arquivação (archive mode); o mesmo que -rlptgoD (sem -H)
  • -r, --recursive       recursivo dentro dos diretórios
  • -R, --relative       utiliza nomes de caminhos relativos
  • -H, --hard-links       preserva os hard links
  • -S, --sparse       manipula eficientemente arquivos dispersos
  • -x, --one-file-system       não ultrapassa os limites do file system
  • --exclude=PATTERN       exclui combinações PATTERN (PADRÃO) de arquivos
  • --delete-during       receiver exclui durante o xfer, não antes
  • --delete-after       receiver exclui depois de transferir, não antes

Rsync no Windows

Rsync está disponível para Windows através do cygwin ou como um pacote stand-alone em cwrsynchttp://sourceforge.net/projects/sereds. Isso é muito conveniente para backups automatizados. Instale um deles (não ambos) e adicione o path (caminho) ao sistema de variáveis do Windows (Windows system variables): # Control Panel -> System -> tab Advanced, button Environment Variables. Edite o sistema de variável “Path” e adicione o caminho completo (full path) ao rsync instalado, ex. C:\Program Files\cwRsync\bin or C:\cygwin\bin. Dessa forma os comandos rsync e ssh ficam disponíveis em um shell de comandos do Windows.

Autenticação de chave pública

Rsync é automaticamente tunelado no SSH e assim utiliza a autenticação SSH no servidor. Backups automáticos tem que evitar a interação de um usuário, para isso a autenticação de chave pública do SSH podem ser usadas e o comando rsync rodará sem uma senha.
Todos os comandos a seguir são executados dentro de um console Windows. Em um console (Start -> Run -> cmd) crie e faça upload da chave como descrito em SSH, altere “user” e “server” como apropriado. Se o arquivo authorized_keys2 não exista ainda, simplesmente copie id_dsa.pub para authorized_keys2 e suba-a.

# ssh-keygen -t dsa -N ''                   # Crie uma chave pública e uma privada
    # rsync user@server:.ssh/authorized_keys2 . # Copie o arquivo localmente a partir do servidor
    # cat id_dsa.pub >> authorized_keys2        # Ou utilize um editor para adicionar a chave
    # rsync authorized_keys2 user@server:.ssh/  # Copie o arquivo de volta para o servidor
    # del authorized_keys2                      # Remova a copia local

Agora teste com (em uma linha):

rsync -rv "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \
    'user@server:My\ Documents/'

Backup automático

Use um arquivo batch automatizar o backup e adicione o arquivo nas tarefas agendadas (scheduled tasks) (Programs -> Accessories -> System Tools -> Scheduled Tasks). Por exemplo crie o arquivo backup.bat e substitua user@server.

@ECHO OFF
    REM rsync the directory My Documents
    SETLOCAL
    SET CWRSYNCHOME=C:\PROGRAM FILES\CWRSYNC
    SET CYGWIN=nontsec
    SET CWOLDPATH=%PATH%
    REM uncomment the next line when using cygwin
    SET PATH=%CWRSYNCHOME%\BIN;%PATH%
    echo Press Control-C to abort
    rsync -av "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \
    'user@server:My\ Documents/'
    pause

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *