Vamos dar uma olhada no seu comando
rsync -avh --ignore-existing -e ssh -r /home/data/logs/2017-09-* {dns,http}.*.log.gz / [email protected]:/home/pnlogs/
A fonte de coleta para isso é todos os arquivos (a recursão é ativada com -r
- mas, na verdade, -a
já faz isso) que corresponde a esses quatro caminhos:
-
/home/data/logs/2017-09-*
-
dns.*.log.gz
-
http.*.log.gz
-
/
O último deles garantirá que o comando rsync
tente copiar tudo.
Acho que o que você está querendo copiar é todos os arquivos de log DNS e HTTP dentro das pastas YYYY-MM-DD, mantendo a estrutura do diretório:
cd /home/data/logs &&
rsync -avhR 2017-09-*/{dns,http}.*.log.gz [email protected]:/home/pnlogs/
Eu não usaria --ignore-existing
a menos que você tenha um motivo realmente strong para saber que deseja fazer isso. (Esse sinalizador impede que rsync
reinicie uma transferência parcial. Lembre-se, você não tem --partial
, então talvez isso seja discutível.)
Você não precisa de -r
porque está usando -a
e esse modo de arquivamento já inclui recursão. Mas, se eu tiver interpretado sua exigência corretamente, não haverá recursão de qualquer maneira.
O sinal -R
informa rsync
para manter os caminhos relativos das árvores de origem no destino. Eu usei cd
para colocar o comando em um ponto de partida útil, porque senão você acabaria com /home/data/logs
sendo incluído no caminho de destino. Envolva tudo isso entre parênteses ( ... )
se você quiser evitar que a alteração de diretório seja efetiva para o restante de qualquer script no qual isso seja executado.