2016-08-03 84 views
-1

我有一個目錄中的日誌文件列表,這些目錄堆積了一年多的時間。我已經編寫了下面的腳本來存檔超過15天的日誌文件。unix腳本超過15天的歸檔日誌文件

腳本:

#!/bin/bash 
files=($(find /opt/Informatica/9.5.1/server/infa_shared/SessLogs -type f -mtime +15)) 
file=SessLog_bkup_`date +"%y-%m-%d"`.tar.gz 
Backup=/opt/Informatica/9.5.1/server/infa_shared/SessLogs/Backup 
tar -zcf $file --remove-files "${files[@]}" 
mv $file $Backup 

但是,當我運行它拋出以下錯誤的腳本

錯誤:

./backuplogs.sh: line 5: /bin/tar: Argument list too long.

請告知,如果我米小姐在腳本荷蘭國際集團的東西

感謝您的幫助 基蘭

+3

標準解決方案是['logrotate'](https://github.com/logrotate/logrotate) – hek2mgl

回答

0

你的錯誤信息是由於與E2BIG你的shell的/bin/tarexecve(2)失敗。

閱讀tar(1)的手冊頁。你可以使用

-T , --files-from =FILE

Get names to extract or create from FILE.

,並結合起來,與腳本的其他一些地方(例如在find命令輸出重定向到一些臨時文件,由-T傳遞給tar ....)。

但正如hek2mgl評論你真的想logrotate(8)

你也可以使用其他的歸檔,例如afio(1)