Bash脚本和使用TAR存档文件夹,如何获取文件夹中的5个最新文件夹?

时间:2014-02-07 15:39:30

标签: bash shell ksh tar aix

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

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 64位

谢谢。

1 个答案:

答案 0 :(得分: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命令