2014-02-07 126 views
0

我有存檔一堆使用tar目錄的腳本,下面是摘錄..Bash腳本和使用TAR歸檔文件夾,如何獲取文件夾中最近5個文件夾?

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 

有可能是隻搶到最新的5個文件夾在我的tar命令/ USR2/devel_snapshots代替整個文件夾?

我該如何去做這項工作?

操作系統是AIX 7.1 64位

謝謝。

+0

要列出得到最近5個文件夾的列表,您可以使用ls -tl | grep^d |頭-5 | awk'{print $ NF}''按目前的目錄列出目錄中的文件/目錄,抓取所有目錄,取前5個目錄名並獲取目錄名:) – csiu

+1

另一種獲取最近5個目錄的方法是使用** awk **'ls -tl | awk'/^d/{if(count <5){print $ NF; count = 1}}'' – csiu

回答

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,排序和頭部將得到最新的5個目錄和與xargs的,你可以給結果作爲參數傳遞給tar命令

+0

輝煌,正是我所需要的 – exxoid

+0

..它現在似乎失敗,它已完成運行..#tar:201402061115:路徑名中的文件或目錄不存在。 tar:201402051115:路徑名中的文件或目錄不存在。 – exxoid

+0

/usr2/devel_snapshots/201402061115將在該頂級文件夾中有文件和子文件夾..會這樣嗎? – exxoid

相關問題