tar文件以日期为名称?


16

我正在尝试以日期和时间为名称的tar和gzip文件:

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标准是yyyy-mm-ddThh:mm:ss或+%FT%T采用date语法。除了以明确的格式给出日期外,它还可以很好地排序!

@drewbenn还带有GNU日期:(date --iso-8601=s但它也增加了时区偏移量)
muru

2
我不鼓励使用冒号。类似20170818_122314或类似的东西很容易识别和/或解析。冒号在各种情况下都会造成麻烦(您刚刚发现了一种情况)。
罗尔夫(Rolf)

Answers:


31

是的。该文档说至少对于GNU tar :

如果归档文件名包含冒号(:),则假定它是另一台计算机上的文件。如果归档文件user@host:file,那么文件使用主机上的主机。使用rsh程序(用户名为user)访问远程主机。如果省略用户名(连同@符号),则将使用您的用户名。(这是正常的rsh行为。)。

它还提供了一种解决方法:

--force-local
      Archive file is local even if it has a colon.

5
更短的解决方法:tar zcf ./"$date".tar.gz ...领先的路径规范似乎使tar将其视为常规文件
muru
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.