问题出:
在文件名中,GNU tar 对其进行了特殊处理。
在我自己的系统上,我有一个名为 的目录foo
,我得到这个:
$ tar zcf foo:42.tar.gz foo
tar (child): Cannot connect to foo: resolve failed
tar: Child returned status 128
tar: Error is not recoverable: exiting now
$
似乎没有任何方法可以逃脱该:
角色——但您可以使用该选项来禁止特殊解释--force-local
(感谢 Daniel Serodio 指出这一点)。
文件名中的冒号字符虽然是合法的,但通常是个坏主意。例如,您可能无法通过scp
.
这是GNU tar 手册中的相关部分(info tar
并转到第 6.1 节):
要在连接到远程计算机的设备上指定存档文件,请使用以下命令:
--file=hostname:/dev/file-name
如果可能,tar 将设置远程连接,并提示您输入用户名和密码。如果您使用--file=@hostname:/dev/file-name
, tar 将尝试使用您的用户名作为远程计算机上的用户名来建立远程连接。
当我制作包含时间戳的文件名时,我通常使用YYYY-MM-DD-HHMMSS
$(date +%F-%H%M%S)
或者你可以使用YYYY-MM-DD_HH_MM_SS
,如果你喜欢
$(date +%F-%H_%M_%S)