ran*_*anu 2 linux shell date tar
我想用日期命名一个tar文件,但我尝试的是不起作用,请参阅下面的代码以获得更好的解释,以及ai必须做什么?
date=$( date +%Y-%m-%d_%H:%M:%S )
tar -czf ${imageName-$date}.tar.gz ${imageBasename} 2>>$ERRORLOG
Run Code Online (Sandbox Code Playgroud)
图像名称是存储图像名称的变量,如: win-ser-rdp
我也试过了:
tar -czf ${imageName}:${date}.tar.gz ${imageBasename} 2>>$ERRORLOG
Run Code Online (Sandbox Code Playgroud)
也没有工作:(
感谢所有的帮助:D
Kei*_*son 14
问题出:在文件名中,由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
$
Run Code Online (Sandbox Code Playgroud)
似乎没有任何方法可以逃避:角色 - 但你可以通过--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)
Run Code Online (Sandbox Code Playgroud)
或者YYYY-MM-DD_HH_MM_SS如果你愿意,你可以使用
$(date +%F-%H_%M_%S)
Run Code Online (Sandbox Code Playgroud)
您的文件名和变量不正确:
${imageName-$date}
Run Code Online (Sandbox Code Playgroud)
应该
${imageName}${date}
Run Code Online (Sandbox Code Playgroud)
和
${imageName}:${date}.tar.gz
Run Code Online (Sandbox Code Playgroud)
将被解释为NFS位置,因为:在名称中,例如server:filename.替换为:a -或其他非特殊字符.
| 归档时间: |
|
| 查看次数: |
4684 次 |
| 最近记录: |