Arquivo tar com data como nome?

16

Estou tentando tar e gzip um arquivo com data e hora como o nome:

date=$(date '+%d-%m-%Y_%H:%M:%S');    
tar -zcf "$date".tar.gz repo/bin/

Mas eu volto:

tar (child): Cannot connect to 17-08-2017_21: resolve failed
tar: Child returned status 128
tar: Error is not recoverable: exiting now

O que exatamente está acontecendo aqui e como posso corrigir?

O tar está tentando se conectar ao nome como se fosse um ip?

Philip Kirkbride
fonte
7
O padrão ISO para datas é aaaa-mm-ddThh: mm: ss ou +%FT%Tna datesintaxe. Além de dar a data em um formato inequívoco, é uma boa classificação!
@drewbenn com data GNU, também: date --iso-8601=s(mas também adiciona um deslocamento de fuso horário)
Muru
2
Eu desencorajaria o uso de dois pontos. Algo parecido 20170818_122314ou semelhante é suficientemente fácil de reconhecer e / ou analisar. Dois pontos causam problemas em várias situações (você acabou de descobrir um).
Rolf

Respostas:

31

Sim, ele é. Pelo menos para o GNU tar, a documentação diz:

Se o nome do arquivo archive incluir dois pontos ( :), será considerado um arquivo em outra máquina. Se o arquivo morto estiver user@host:file, o arquivo será usado no host do host . O host remoto é acessado usando o programa rsh, com um nome de usuário . Se o nome de usuário for omitido (junto com o @sinal), seu nome de usuário será usado. (Este é o comportamento rsh normal.).

Ele também fornece uma solução alternativa:

--force-local
      Archive file is local even if it has a colon.
chave de aço
fonte
5
Shorter solução alternativa: tar zcf ./"$date".tar.gz ...A especificação levando caminho parece fazer deleite tar-lo como um arquivo regular
Muru