Além do problema apontado pelo @Cyrus, você está usando a matriz de sites errada. Você está realmente cometendo dois erros que (ironicamente) se anulam mutuamente. Primeiro, quando você define a matriz com sites=("site1.ru site2.ru site3.ru")
, as aspas criam um único elemento de matriz, em vez de tornar cada site um elemento separado. Então, quando você faz referência a ${sites[*]}
, o [*]
faz com que todos os elementos sejam mesclados (separados por espaços) (ou seria, se houvesse mais de um elemento) e, em seguida, a falta de aspas duplas em torno disso significa que ele divide o resultado em espaços (e não entre elementos da matriz) e expande qualquer curinga, etc.
Resultado da rede: você não está recebendo nenhum dos benefícios de usar uma matriz e, se algum dos nomes de sites tiver metacaracteres de shell, você terá ... um comportamento inesperado. Nesse caso, não é provável que cause problemas (os caracteres problemáticos são geralmente proibidos no DNS), mas é melhor aprender a fazer isso corretamente:
now="$(date +'%d_%m_%Y')"
path="/var/www/vitalii/backups"
sites=(site1.ru site2.ru site3.ru) # If any elements had spaces or other funny characters, you'd need to quote them INDIVIDUALLY
for i in "${sites[@]}" # Double-quotes and [@] make it treat each element as a "word", even if they contain funny characters
do
echo "$path/$i"
tar -cvzf "$path/${i}_${now}.tgz" "/var/www/vitalii/$i" # ${i}_ keeps it from treating "_" as part of the variable name
done
EDIT: como @ G-Man apontou em outro comentário, usar aspas duplas em torno de todas referências de variáveis é uma boa idéia. Eu consertei isso acima ...