Тар файл с датой в качестве имени?

16

Я пытаюсь распаковать и сжать файл с датой и временем в качестве имени:

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

Но я вернусь

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

Что именно здесь происходит и как я могу это исправить?

Tar пытается подключиться к имени, как будто это ip?

Филип Киркбрайд
источник
7
Стандарт ISO для дат : гггг-мм-ддтчч: мм: сс или синтаксис +%FT%Tin date. В дополнение к предоставлению даты в однозначном формате, она хорошо сортируется!
@drewbenn с датой GNU, также: date --iso-8601=s(но это также добавляет смещение часового пояса)
Muru
2
Я бы не рекомендовал использовать двоеточия. Нечто подобное 20170818_122314или похожее достаточно легко распознать и / или проанализировать. Колоны вызывают проблемы в различных ситуациях (вы только что обнаружили).
Рольф

Ответы:

31

Да, это так. По крайней мере для GNU tar документация гласит:

Если имя файла архива включает двоеточие ( :), то предполагается, что это файл на другом компьютере. Если файл архива user@host:file, то файл используется на хосте хоста . Доступ к удаленному хосту осуществляется с помощью программы rsh с именем пользователя user . Если имя пользователя опущено (вместе со @знаком), то будет использоваться ваше имя пользователя. (Это нормальное поведение rsh.)

Это также обеспечивает обходной путь:

--force-local
      Archive file is local even if it has a colon.
steeldriver
источник
5
Укороченный обходной путь: tar zcf ./"$date".tar.gz ...По-видимому, из-за ведущей спецификации пути tar рассматривает ее как обычный файл
muru