Tentando criar um cron para o Rsync e depois tar a pasta

1

Estou preso no primeiro obstáculo!

Eu quero executar alguns comandos de um script bash. Primeiro algo assim para rsync alguns diretórios:

rsync -e ssh -az [email protected]:/home /location/of/local/folder

Então, algo assim para tar e copiar os arquivos em outro lugar:

cd /location/of/local/folder
tar zcf /var/backups/home-'date +%Y%m%d'.tar.gz home

Espero que isso esteja fazendo sentido.

O problema é que obviamente eu desejo que o rsync termine antes que o diretório seja roteado. Então, há algum código que eu possa usar para ter certeza de que o rsync terminou antes de executar o comando tar ?

por exemplo. (pseudo código)

rsync
while(is syncing){
    sleep 10
}
tar

Ou meu script .sh só executará a próxima linha depois que a primeira linha terminar e sair?

Obrigado pela sua ajuda.

    
por Thomas Clayson 04.05.2012 / 18:01

1 resposta

4

Comandos em um script de shell são executados sequencialmente. Se o seu primeiro comando for rsync , o próximo comando não será executado até que rsync seja concluído.

O que você quer ter certeza é que rsync termine com sucesso antes de continuar com o próximo comando.

Esta não é a solução mais elegante, mas a mais fácil de implementar.

rsync -e ssh -az [email protected]:/home /location/of/local/folder &&\
tar zcf /var/backups/home-'date +%Y%m%d'.tar.gz /location/of/local/folder

Lembre-se de que isso só funcionará se o status de saída de rsync for 0 . Qualquer outro status de saída e comando 2 não serão executados.

AND and OR lists are sequences of one of more pipelines separated by the &&
and  ||  control operators, respectively.  AND and OR lists are executed 
with left associativity.  An AND list has the form
    command1 && command2
command2 is executed if, and only if, command1 returns an exit status of zero.

Você pode adicionar mais inteligência ao seu script se tiver realizado ações diferentes com base nos rsync EXIT VALUES.

#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin

rsync -e ssh -az [email protected]:/home /location/of/local/folder

if [ $? != "0" ]
  then
   echo "There was a problem"
  else
   tar zcf /var/backups/home-'date +%Y%m%d'.tar.gz /location/of/local/folder
 fi
    
por 04.05.2012 / 18:12