Gostaria de sincronizar dois diretórios com a exclusão de alguns arquivos. Eu tentei abaixo do código, mas ele falha em excluir.
FILES=abc.zip,hh.sh,Workarea/test/hi.jpg
rsync -av --exclude={$FILES} /home/test/ /home/test2
Para verificar isso, eu executei como
# sh -x test.sh
+ FILES=abc.zip,hh.sh,Workarea/test/hi.jpg
+ rsync -av '--exclude={abc.zip,hh.sh,Workarea/test/hi.jpg}' /home/test/ /home/test2
Você não pode usar a
bash
expansão{a,b,c}
como nada além de um literal (você não pode colocara,b,c
ou mesmo{a,b,c}
em uma variável e expandi-la diretamente. Você poderia usar,eval
mas isso abre muitas complicações inesperadas, e eu realmente não recomendo:Aqui está uma sugestão alternativa melhor para você, que usa o
bash
recurso de matriz para manter o conjunto de exclusões. Em seguida, construímos a linha de comandorsync
iterando nela.