Isto de andar a brincar com o Raspberry Pi como servidor, acabou por me criar um pequeno problema... Então se eu já tinha um NAS personalizado e mais potente para arquivo e proteção de ficheiros, que faria agora com os ficheiros partilhados no RPi ?
Eu precisava arranjar uma forma de sincronizar pastas pela rede de modo a arquivar transferido ficheiros novos ou alterados do RPi para o meu NAS de forma automática! Pois não quero trabalhos adicionais ;)
Depois de alguma pesquisa e muita batuta, arranjei e adaptei a seguinte solução (Os 3 passos):
1 - MaqA com ip 192.168.1.89 é o RPi, este eu esqueço-me dele sempre ligado pois gasta apenas 3.5W. Pretendo guardar os ficheiros partilhados que estão no diretório (home/pi/downloads/USB/Media) da MaqA
2 - MaqB com ip 192.168.1.68 é o Unraid, este esta quase sempre desligado, é mais guloso e gasta 33W. Pretendo guardar os ficheiros do RPi em (/mnt/user) nesta MaqB.
E para sincronizar ficheiros e pastas nada melhor que o Rysnc em conjunto com o protocolo de rede SSH. Assim tanto às maquinas A como a B terão que ter acesso por SSH. O Rysnc instalado em ambas também!
3 - Como quero saber o que se passou em cada sincronização de ficheiros, guardo um log com data em (/mnt/cache/unraid/$(date +%Y%m%d)_rsync.log)
- O objectivo é que os ficheiros novos ou alterados sejam copiados para a MaqB.
- Na MaqB não existe perigo de eliminação de ficheiros.
- E na MaqA os ficheiros também não são apagados.
E é isto que faz o seguinte comando (executado na MaqB 192.168.1.68 por ssh):
Mas ao executar este comando pede-me sempre a password de acesso a MaqA!! Ora se pretendo criar uma forma automática de isto correr sem a minha intervenção, então vou ter que gerar a keygen de acesso a essa maquina. É com o seguinte comando, fazendo ENTER em tudo:
Depois copio o ficheiro gerado para a MaqA através de ssh. Pedirá uma password e coloco a password da MaqA:
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.89
Agora já devo aceder a MaqA sem password, e vou testar:
ssh 192.168.1.89
cp -R /root/.ssh /boot/
# Copia o diretório .ssh para root para funcionar sem pedido de password:
cp -R /boot/.ssh /root/
# Reponho permissões perdidas na copia:
chmod 600 -R /root/.ssh
# Espero que o sistema arranque antes de iniciar copias, 240 segundos de espera:
sleep 240
# O comando seguinte escrito todo numa linha, inicia a copia de ficheiros:
rsync -avh --log-file=/mnt/cache/unraid/$(date +%Y%m%d)_rsync.log root@192.168.1.89:/home/pi/downloads/USB/Media /mnt/user/
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.89
Agora já devo aceder a MaqA sem password, e vou testar:
ssh 192.168.1.89
Ou entrar na MaqA 192.168.1.89 não foi pedida a password. Então esta tudo correto e a copia de ficheiros com o rsync sobre a rede por ssh vai funcionar sem o pedido da dita password.
A partir deste passo posso executar então o comando completo, ou adiciona-lo a um ficheiro de arranque da maquina em questão.
A partir deste passo posso executar então o comando completo, ou adiciona-lo a um ficheiro de arranque da maquina em questão.
Na minha MaqB eu adaptei da seguinte forma:
Como o objectivo é a MaqB copiar os ficheiros novos e alterados da MaqA sempre que ligue a MaqB, vou adicionar algumas linhas a um ficheiro de arranque da MaqB com essas mesmas instruções adaptando tudo há maquina em questão:
Neste caso o software da MaqB é o Unraid, e este deixa sempre tudo na RAM, o que quer dizer que o diretório root/.ssh onde estão os ficheiros gerados pela ssh-keygen desaparecem a cada reboot!
Para dar a volta a isto, copio primeiro esse diretório para uma diretoria do disco ou da PenUSB que serve de arranque do Unraid.
cp -R /root/.ssh /boot/
Um dos ficheiros de arranque do Unraid é o go, e esta em /boot/config/go. Então vou adicionar as seguintes linhas ao ficheiro go, salvando e gravando as alterações no final (nano /boot/config/go):
# Copia o diretório .ssh para root para funcionar sem pedido de password:
cp -R /boot/.ssh /root/
# Reponho permissões perdidas na copia:
chmod 600 -R /root/.ssh
# Espero que o sistema arranque antes de iniciar copias, 240 segundos de espera:
sleep 240
# O comando seguinte escrito todo numa linha, inicia a copia de ficheiros:
rsync -avh --log-file=/mnt/cache/unraid/$(date +%Y%m%d)_rsync.log root@192.168.1.89:/home/pi/downloads/USB/Media /mnt/user/
Agora cada vez que ligo a MaqB, o Unraid após quatro minutos verifica e transfere ficheiros novos ou alterados da MaqA que ainda não estão na MaqB!
Acabou por ser simples, vai ser eficaz, e é engraçado.
Acabou por ser simples, vai ser eficaz, e é engraçado.
Outra coisa que vou implementar também!
ResponderEliminar