Unix
收集所有以 .log 結尾的文件並創建 tar.gz 文件的腳本
我目前正在使用此腳本行從給定目錄結構中查找所有日誌文件,並將它們複製到另一個目錄,以便我可以輕鬆地壓縮它們。
find . -name "*.log" -exec cp \{\} /tmp/allLogs/ \;
我遇到的問題是,目錄/子目錄資訊失去了,因為我只複製文件。
例如我有:
./product/install/install.log ./product/execution/daily.log ./other/conf/blah.log
我最終得到:
/tmp/allLogs/install.log /tmp/allLogs/daily.log /tmp/allLogs/blah.log
我想擁有:
/tmp/allLogs/product/install/install.log /tmp/allLogs/product/execution/daily.log /tmp/allLogs/other/conf/blah.log
將它們複製到另一個目錄以壓縮它們的原因是什麼?以下將在一個步驟中從所有日誌文件中創建一個壓縮的 tar 文件,同時保持目錄結構(假設它從根目錄執行:
find . -iname '*.log' -print0 | xargs -0 tar zcf /tmp/test.tar.gz
例如:
kbrandt@alpine:~/scrap/tar$ find . *.log . ./foo ./bar ./bar/baz.log kbrandt@alpine:~/scrap/tar$ find . -iname '*.log' -print0 | xargs -0 tar zcf /tmp/test.tar.gz #List files in the archive with the -t switch kbrandt@alpine:~/scrap/tar$ tar -tzf /tmp/test.tar.gz ./bar/baz.log