Executando várias execuções rsync no script

1

Estou tentando executar vários comandos rsync a partir de um script bash, mas apenas o primeiro é disparado. Eu tentei vincular os comandos com && e ; , mas nem trabalho.

#! /bin/bash
rsync -ahPr --delete-excluded --exclude='.DS_Store' --exclude=Caches/ --ignore-errors --stats --log-file=$LOGFILE --files-from=$FILESFROM ~/$SOURCE /Volumes/$DEST &&
rsync -avh --progress ~/.profile /Volumes/$DEST/_profile/profile &&
rsync -avh --progress ~/.gitconfig /Volumes/$DEST/_profile/gitconfig &&
rsync -avh --progress ~/.ssh/ /Volumes/$DEST/_profile/ssh/ &&
rsync -avh --progress ~/.vim/ /Volumes/$DEST/_profile/vim/

Estou fazendo os últimos 4 comandos como separados porque estou renomeando os arquivos / diretórios na hora - não tenho certeza se existe uma maneira melhor de fazer isso?

Estou executando o script com bash -x myscript.sh para ver se há algum erro, mas não.

    
por sansSpoon 22.09.2017 / 05:25

1 resposta

3

Rodando

rsync && rsync

iniciará o segundo rsync após o primeiro ser concluído. Você quer

rsync&

Explicação:

a && b

a corre, b é executado a seguir apenas se a competir com sucesso

a || b

a corre, b é executado a seguir apenas se completar com êxito

a; b

a corre, b corre em seguida, não importa o sucesso

a& b

a corre, é enviado para o fundo. Isso é equivalente a executar um, digitando ctrl-Z e o bg em execução

Portanto, se você quiser que seus programas sejam executados ao mesmo tempo, substitua os & s &; por single &

    
por 22.09.2017 / 05:46

Tags