Eu tenho o MinGW (também conhecido como 'Git Bash' ) no Windows 7 e um arquivo em lotes que executa o rsync para fazer backup de arquivos em uma unidade externa em um computador Linux remoto. Aqui está o arquivo em lotes ( my_rsync_file.bat
)
REM Changing directory... (assuming we are in G:/My Documents/My Various Things)
cd ../
REM starting rsync...
bash -c "rsync -avzh -P --stats --timeout=60 --exclude Downloads . 'my_remote_linux_computer@128.95.170.200:/media/my_remote_linux_computer/LaCie/My\ Documents'"
Aqui está um pouco de explicação linha por linha:
REM Changing directory... (assuming we are in G:/My Documents/My Various Things)
Isso apenas emite uma mensagem para me lembrar o que está acontecendo.
cd ../
Isso altera o diretório um nível acima de onde está o arquivo em lotes (para 'Meus documentos'). O arquivo em lote está em uma unidade externa no meu computador com Windows. Quero sincronizar toda a pasta 'Meus documentos' nesta unidade externa com uma pasta com o mesmo nome em uma unidade externa no meu computador Linux remoto.
REM starting rsync...
Apenas imprime outra mensagem.
bash -c "rsync -avz -P --stats --timeout=60 --exclude Downloads . my_remote_linux_computer@128.95.155.200:/media/my_remote_linux_computer/LaCie/My\\ Documents"
bash
: inicia o MinGW que possui uma biblioteca rsync integrada
-c
: não tem certeza do que isso faz
rsync
: biblioteca para sincronizar arquivos, vem com o MinGW
-avzh
: a-Archive, v-Verbose, z-Compress, h-Human-readable, essas são as opções comuns (mais: http://linux.die.net/man/1/rsync )
-P
: mostre o progresso de arquivos grandes para que eu saiba se está congelado ou não
--stats
: mostre o resumo de quantos arquivos e bytes foram transferidos no final
--timeout=60
: mate-o depois 60 segundos, se ele ficar parado,
--exclude
omitir arquivos / diretórios da sincronização; nesse caso, excluo um diretório chamado 'Downloads'
.
: indica para sincronizar todo o conteúdo de 'Meus documentos' (espere que o item especificado seja excluído na linha acima)
my_remote_linux_computer
: name do meu computador Linux remoto (não é o nome real;)
@128.95.155.200
: os endereços IP do meu computador linux remoto, em https://www.whatismyip.com/ (não o meu endereço IP real :)
/media/my_remote_linux_computer/LaCie/My\\ Documents
: o caminho para o diretório no meu computador linux remoto em que desejo receber os arquivos. É uma unidade externa.
Observe que o espaço em "Meus documentos" é escapado com duas barras invertidas, e o nome completo e o diretório do destino remoto estão entre aspas duplas.
Quando inicio um clique duplo no arquivo bat, solicito a senha do meu computador linux remoto. Quando termina, recebo uma saída resumida e sou solicitado a pressionar qualquer tecla para fechar.
-c
parâmetro bash man: se a opção -c estiver presente, os comandos serão lidos da string. Se houver argumentos após a sequência, eles serão atribuídos aos parâmetros posicionais, começando com $ 0.