【问题标题】:Shellscript 2nd newest folder in tgzShellscript tgz 中的第二个最新文件夹
【发布时间】:2016-10-25 08:51:10
【问题描述】:

我尝试开发一个小备份 shellscript。 当我在 Backup_FILESERVER 文件夹中运行它时,它正在创建 tgz。 但是从 /root 我得到一个错误。

tar cvfz /NAS/for_tape/FILESERVER.tgz /NAS/Backup_FILESERVER/`ls -Art | tail -2 | head -n 1`

错误:

tar:星期二:无法统计:没有这样的文件或目录

tar:由于先前的错误而以失败状态退出

文件夹“/NAS/Backup_FILESERVER”中每个工作日有 5 个文件夹。周一、周二、...

是否可以让它运行起来?

【问题讨论】:

  • 为什么不将文件名存储在变量中并将其提供给 tar 命令??
  • 我不太擅长 bash 编程。我想在一个命令行中运行它,它更舒服。

标签: bash shell backup tar


【解决方案1】:

你可以试试

tar cvzf /NAS/for_tape/FILESERVER.tgz `find /NAS/Backup_FILESERVER/ -type d -exec sh -c "ls -1rt" \; | tail -2 | head -n 1`

findls -1rt 命令根据修改时间对文件进行排序并反转它。

您可以在开始压缩之前确认命令find /NAS/Backup_FILESERVER/ -type d -exec sh -c "ls -1rt" \; | tail -2 | head -n 1是否提供了您需要的文件夹

【讨论】:

  • 感谢您的建议,但是当我运行此命令时,没有任何反应。我等了大约 5 分钟,但没有创建存档。
  • @RickySpanish: find /NAS/Backup_FILESERVER/ -type d -printf "%p\n" 没有返回任何文件夹?你确定文件夹有内容吗?
  • 没有返回文件夹。我很确定,这个目录中有 5 个文件夹。 :/ 没有管道后面的命令,我得到最旧文件夹的内容。
  • @RickySpanish:您可以尝试将-print 设置为find /NAS/Backup_FILESERVER/ -type d -print",而不使用排序选项。这应该返回文件夹,否则您正在搜索的文件夹是空的。
  • 对不起,我没有看到你的答案。有了这个评论,我还得到了最旧文件夹的内容。可能是/NAS/Backup_FILESERVER/中所有文件夹的内容
猜你喜欢
  • 2023-04-09
  • 2013-05-13
  • 2016-02-11
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多