Automatização de pastas Rsync

0

Eu tenho uma pasta no servidor remoto, à qual estou me conectando via SSH. Quando preciso sincronizar pastas, estou usando o acesso manualmente via scp. (Estou sincronizando minha pasta com a pasta no servidor.)

Como posso configurar esse trabalho para ser feito automaticamente por algum script, para que ele sincronize automaticamente as pastas e insira automaticamente a senha?

Obrigado!

    
por Accelerate to the Infinity 10.04.2014 / 22:15

2 respostas

0

O SSH sem uma senha geralmente é feito com a autenticação de chave pública . Normalmente, você criptografa a chave privada com uma senha, mas como deseja executar um script de sincronização autônomo, recomendo que você crie as chaves como outro usuário e execute o script de shell como esse usuário.

No cliente:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
# Press enter twice when asked for a passphrase

Como o Mac não tem o ID de cópia do SSH, você precisa fazer o trabalho manualmente:

scp ~/.ssh/id_rsa.pub [email protected]:~

No servidor

mkdir ~/.ssh
chmod 700 ~/.ssh
# Append or copy public key to authorized keys file:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Um script de shell é um arquivo de texto com executável conjunto de permissões que começa com

#!/bin/sh
# you can then do any commands that you do manually, ex:
# (See levy's answer for the rsync command to use)
rsync /home/Anders/ 192.168.3.5:~/backup/location

Para executar um script periodicamente, você pode usar o cron . Digamos que salvamos esse script em /home/Anders/bin/sync.sh. Você então executaria:

env EDITOR=nano crontab -e

como o usuário que você deseja executar o script cron como.

No editor de texto que aparece, você deve digitar:

#Minute Hour  Day Month Year  Command  
0        13   *   *     *     /home/Anders/bin/sync.sh

O texto acima seria sincronizado todos os dias no 0º minuto da 14ª hora (começa a contar a partir de zero), ajustando-se às suas necessidades.

Outra opção poderia ser SSHFS Ou seja, você montaria e você poderia operá-lo como um diretório normal.

    
por 10.04.2014 / 23:15
0

Para poder rsync sem uma senha, você precisará criar chaves privadas e públicas ssh. E cole sua chave pública no arquivo ~ / .ssh / authorized_keys no seu servidor remoto. link

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host # you could also just login and create the authorized_keys file and paste your public key. 
ssh remote-host

Para o rsync -avz --delete -e ssh ~/dir/ user@server:/home/dir

Eu uso o --delete para ter certeza de que tudo é sempre o mesmo, mas remova se você não quiser fazer isso. Neste ponto, coloque o comando rsync em um script bash e coloque-o no cron ou execute quando você quiser.

    
por 10.04.2014 / 22:50