O problema é que a saída de md5sum
inclui tanto o valor de hash como o nome do arquivo original, então a variável MD5 é configurada para algo como "28a6a6c11f088d6149d178af6e45102a / dev / datto0". Assim o comando
dd of=/tmp/BACKUP_${TODAY}_${MD5}.dd.gz
expande para
dd of=/tmp/BACKUP_09_21_2015_28a6a6c11f088d6149d178af6e45102a /dev/datto0.dd.gz
... o que confunde muito dd
. Da mesma forma, quando você usa > /tmp/BACKUP_${TODAY}_${MD5}.dd.gz
, ele expande para duas palavras, o shell não sabe ao certo para qual enviar a saída e fornece um erro de "redirecionamento ambíguo".
Você poderia resolver isso canalizando a saída de md5sum
através de awk '{print $1}'
:
MD5=$(md5sum /dev/datto0 | awk '{print $1}')
... ou usando a variável de expansão ${MD5%% *}
, que cortará o primeiro espaço e tudo depois dele. Além disso, geralmente é uma boa idéia manter as referências de variáveis dentro de aspas duplas - isso evita muitos problemas de análise estranhos como esse. Combinando isso com a sugestão de JakeGould dá:
dd if=/dev/datto0 | pv | gzip -1 > "/tmp/BACKUP_${TODAY}_${MD5%% *}.dd.gz"