【问题标题】:Tar command throwing errors when attempting to create an archive using the date command尝试使用 date 命令创建存档时,Tar 命令引发错误
【发布时间】:2018-02-14 01:55:56
【问题描述】:

tar 命令我用的比较多,很熟悉。但是,我尝试使用 date 命令创建存档来命名存档文件,它会抛出一个错误,即无法打开文件,这很奇怪,因为我不是试图打开文件而是创建它.

这是目录、代码和错误的副本:

@MDG /media/VideoCam/Test $ ll
total 468
drwxr-xr-x 3 neo neo   4096 Sep  5 09:55 ./
drwxr-xr-x 4 neo neo 466944 Sep  4 21:54 ../
-rw-r--r-- 1 neo neo     45 Sep  5 08:52 1.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 1.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 2.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 2.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 3.jpg
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 4.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 4.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 5.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 5.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 6.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 6.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 7.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 7.mp4
-rw-r--r-- 1 neo neo      0 Sep  4 19:32 8.jpg
-rw-rw-r-- 1 neo neo      0 Sep  5 08:41 8.mp4
drwxr-xr-x 2 neo neo   4096 Sep  4 19:30 Archive/
neo@MDG /media/VideoCam/Test $ sudo tar -zcvf "archive.$(date '+%D').tar.gz" *.jpg
tar (child): archive.09/05/17.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
neo@MDG /media/VideoCam/Test $

我尝试了许多不同的连接方式,带引号和不带引号,切换命令选项 (zcvf) 的顺序等。如果我省略了 date 命令而只给它一个名称,例如archive.tar.gz,它执行得很好,但是引入 date 命令会导致错误。我还尝试将 date 命令设置为具有类似结果的变量。

【问题讨论】:

  • 请修正格式。
  • / 不允许出现在文件名中。

标签: date command-line archive tar


【解决方案1】:

如果您查看错误消息,您会看到

tar (child): archive.09/05/17.tar.gz: Cannot open: No such file or directory

这表明它正在尝试创建文件archive.09/05/17.tar.gz。即17.tar.gz在目录05,在目录archive.09

如果这是您真正想要的,我对此表示怀疑,您需要在 tar 之外创建目录,例如

mkdir -p archive.09/05

如果您不想要子目录,则不能在文件名中使用 / 字符。为date 命令尝试不同的格式;一个常见的选项是+%F,因为它会生成文件名,如果按文本排序,这些文件名的顺序仍然正确。

【讨论】:

  • 哇,感谢所有这么快回答这个问题的人!尽管我已经使用 Linux 很长时间了,但即使是最简单的编码/脚本,我也是个菜鸟。答案似乎很明显,但它完全让我无法理解。另外,根据@Cyrus,我将查看编辑帮助。再次感谢!
【解决方案2】:

我强烈建议您阅读 date 手册页并检查格式选项。

正如其他人所建议的,问题在于date 输出的格式

$ date '+%D'
09/05/17

由于 Unix 的典型行为,您不能创建名称中带有斜杠的文件。你应该尝试类似

$ date '+%m-%d-%Y'
09-05-2017

如果您想保留与%D 相同的格式。

【讨论】:

    【解决方案3】:

    日期打印出斜线,并将其视为文件夹路径。使用破折号。

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 2020-09-06
      • 2021-06-01
      • 1970-01-01
      • 2021-06-24
      • 2019-09-18
      • 2021-08-09
      • 2018-12-11
      • 2021-06-25
      相关资源
      最近更新 更多