Isso parece estranho:
backup_'echo'mv "$i" "${i//"/"/_}''_'hostname'.'date +%m.%d.%Y'.tar.gz
Você está tentando aninhar mv
em echo
aqui? A sintaxe $(...)
para substituição de comandos facilitaria o aninhamento:
backup_$(echo $(mv this that))_$(hostname)...
Mas ainda não vejo nenhum uso para mv
aqui, e muito menos o echo
que apenas repetiria o que mv
produzia, e não deveria produzir nada se funcionasse.
Podemos apenas anular o mv
e criar o nome do arquivo com ${var//\//_}
, o que alteraria todas as instâncias de /
na variável com _
.
Talvez algo assim, então, para todo o ciclo:
for path in /var /usr/image /usr/image/temp ; do
x=$(path#/} # remove leading / if there is one
tarfile=backup_${x//\//_}_$(hostname)_$(date +%Y-%m-%d).tar.gz
tar -cvpzf "$tarfile" "$path"
done
Observação: alterei o formato de data de 05-17-2017
para 2017-05-17
porque o último torna a classificação mais fácil. Remover o /
inicial é redundante, já que ele seria transformado em _
, o que queríamos mesmo assim, mas acho que é mais estruturado dessa maneira.