我正在嘗試使用 bash shell 腳本將 s3 cp 命令輸出保存到單個日志檔案。我的腳本從另一個名為 output.tsv 的檔案中獲取源和目標存盤桶資訊,該檔案實際上是 while 回圈的輸入。像下面。我正在使用 &>> 將輸出重定向到帶有時間戳的檔案
while read SOURCE DESTINATION
do
aws s3 cp $SOURCE $DESTINATION &>> /shared_data/logs/logs-$(date "%b-%d-%Y-%H-%M-%Z").log
done < output.tsv
s3 cp 日志應該重定向/附加到單個日志檔案,但我看到日志檔案每分鐘創建一次,而不是將其重定向到單個檔案。僅供參考,我正在嘗試復制大量檔案,并且我的腳本運行了一個小時。
-rwxrwxr-- 1 user1 group1 33K Oct 28 06:13 logs-Oct-28-2021-06-12-PDT.log
-rwxrwxr-- 1 user1 group1 33K Oct 28 06:14 logs-Oct-28-2021-06-13-PDT.log
-rwxrwxr-- 1 user1 group1 53K Oct 28 06:15 logs-Oct-28-2021-06-14-PDT.log
uj5u.com熱心網友回復:
(我不是 AWS S3 用戶,但是)關于您的用例僅與 shell 問題相關,您可以在while回圈之外定義檔案名:
log="/shared_data/logs/logs-$(date "%b-%d-%Y-%H-%M-%Z").log"
while read SOURCE DESTINATION; do
aws s3 cp "$SOURCE" "$DESTINATION" &>> "$log"
done < output.tsv
順便說一句,請注意,您可能希望更改date格式字串以使用更標準(類似于ISO-8601)的編碼:
log="/shared_data/logs/logs-$(date -u "%Y-%m-%d_%H-%M-%S").log"
該date命令的優點是:
- 從字典上講,字串排序順序與日期匹配的事實;
- 并使用 UTC 時區(感謝option
-u):
$ date -u "%Y-%m-%d_%H-%M-%S"
2021-10-28_16-42-00
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/344532.html
上一篇:使用引數回應重定向
