【问题标题】:Bash scripting and using TAR to archive folders, how to grab the 5 most recent folders in a folder?Bash 脚本和使用 TAR 归档文件夹,如何获取文件夹中最近的 5 个文件夹?
【发布时间】:2014-03-05 02:33:02
【问题描述】:

我有一个使用 tar 归档一堆目录的脚本,下面是 sn-p..

run_tar()
{
  clear
  echo "***"
  echo "This can take up to an hour, please wait..."
  echo "***"
  tar -X $BASE/synclive_exclude.list -cf - /usr2/docs /usr2/devel_backup /usr2/devel_config /usr2/devel_logs /usr2/devel_reports /usr2/devel_snapshots /usr2/doc-files | gzip > $DUMP_DIR/stage/usr2.tar.gz &
  wait
}

我遇到的问题是.. 对于上面的一个特定目录.. /usr2/devel_snapshots 该目录很大并且包含每日备份..

此文件夹中的文件夹是..

drwxrwxrwx    3 root     system         8192 Feb 01 11:15 201402011115
drwxrwxrwx    3 root     system         8192 Feb 02 11:15 201402021115
drwxrwxrwx    3 root     system         8192 Feb 03 11:15 201402031115
drwxrwxrwx    3 root     system         8192 Feb 04 11:15 201402041115
drwxrwxrwx    3 root     system         8192 Feb 05 11:15 201402051115
drwxrwxrwx    3 root     system         8192 Feb 06 11:15 201402061115

是否可以在我的 tar 命令中仅从 /usr2/devel_snapshots 中获取最近的 5 个文件夹而不是整个文件夹?

我将如何进行这项工作?

操作系统是 AIX 7.1 64bit

谢谢。

【问题讨论】:

  • 要列出获取最近 5 个文件夹的列表,您可以 ls -tl | grep ^d | head -5 | awk '{print $NF}' 按最近的程度列出目录中的文件/目录,获取所有目录,获取前 5 个文件夹,然后获取那些目录名:)
  • 另一种获取最近 5 个目录的方法是使用 awk ls -tl | awk '/^d/{if (count<5) {print $NF; count +=1}}'

标签: bash shell ksh tar aix


【解决方案1】:

您可以尝试以下方法:

find /usr2/devel_snapshots \
    -type d \
    -maxdepth 1 \
    -mindepth 1 |
        sort -r |
        head -5 | 
        xargs tar -X $BASE/synclive_exclude.list -cf - \
            /usr2/docs /usr2/devel_backup /usr2/devel_config \
            /usr2/devel_logs /usr2/devel_reports /usr2/doc-files | 
                gzip > $DUMP_DIR/stage/usr2.tar.gz &

ls、sort 和 head 将获得最新的 5 个目录,使用 xargs 您可以将结果作为参数提供给 tar 命令

【讨论】:

  • 太棒了,正是我需要的
  • 实际上.. 现在它完成运行似乎失败了.. # tar: 201402061115: 路径名中的文件或目录不存在。 tar: 201402051115: 路径名中的文件或目录不存在。
  • /usr2/devel_snapshots/201402061115 将在该顶级文件夹中有文件和子文件夹..这会是一个问题吗?
  • 我已经更新了我的答案:现在我正在使用 find 所以我确信它只会返回 /usr2/devel_snapshots 中的目录。
猜你喜欢
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 2012-12-01
  • 2015-02-25
相关资源
最近更新 更多