2014-09-24 211 views
0

我有一些tar文件(總是增加日常),例如:shell腳本打包多個tar文件(根據天)

1.tar 
2.tar 
3.tar 
4.tar 
… 

我想等到它達到7.tar14.tar28.tar和繼續,所以如果可能在shell腳本中,我們可以安排tar執行將文件自動裝入單個單元(tar)中(例如:每隔7天tar打包)?

+1

中自動執行該操作,請參閱'cron'。 – starrify 2014-09-24 15:06:51

+2

歡迎來到Stack Overflow。請儘快閱讀[關於]頁面。你需要澄清你的問題。有一件事很簡單:你說「每7天」,但你的例子中提到了7,14,28。偶然忽略了21,還是序列中下一個數字是56,或者是什麼?接下來,是否有單獨的腳本生成編號的tar文件,或者是您的包裝腳本工作的一部分?當腳本需要打包文件時,它是否將'1.tar'..'7.tar'包裝成'week-1.tar',並且將'8.tar'..'14.tar'包裝成'week-2 .tar'?你應該使用日期而不是數字嗎?你怎麼知道什麼時候打包完成? – 2014-09-24 15:13:46

+2

......最後,現在,「包裝」是什麼意思?你需要從7個tar文件中提取文件以打包成一個(新的,臨時的)目錄,然後tar組合目錄?還是隻是在他們已經存在了一週之後壓縮舊的tar文件?或者是什麼? (如果一個星期後壓縮,那麼我建議在創建時壓縮。即使在第一週內,減壓也很便宜。) – 2014-09-24 15:17:02

回答

0
last=`ls [0-9]*.tar | sed s/.tar//g | sort -g | tail -1` 
if(($last%7==0)) 
then 
    tar tar -cf `date '+%b%d'`.tar [1-9]*.tar 
fi 

將它添加到登錄腳本中,並會在創建7.tar,14.tar等之後自動將所有下一個登錄包打包。

它做什麼?

last=`ls [0-9]*.tar | sed s/.tar//g | sort -g | tail -1` 

列表中的文件,刪除結束的.tar,排序和採取的最後一個文件名,這將是最近創建的文件。如果該文件名是7的倍數,那麼將整個事件打包成一個名爲monthdate的tar文件,即今天它將在Sept24.tar