我有一個包含數據庫備份的S3存儲桶。我正在創建一個腳本,我想下載最新的備份(並最終將其還原到其他地方),但我不知道如何才能從桶中獲取最新文件。使用AWS CLI下載S3存儲桶中的最新文件?
是否可以使用AWS CLI工具僅將最近的文件從s3存儲桶複製到本地目錄?
我有一個包含數據庫備份的S3存儲桶。我正在創建一個腳本,我想下載最新的備份(並最終將其還原到其他地方),但我不知道如何才能從桶中獲取最新文件。使用AWS CLI下載S3存儲桶中的最新文件?
是否可以使用AWS CLI工具僅將最近的文件從s3存儲桶複製到本地目錄?
這是您可以採取的方法。
可以列出在桶中的所有對象與aws s3 ls $BUCKET --recursive
:
$ aws s3 ls $BUCKET --recursive
2015-05-05 15:36:17 4 an_object.txt
2015-06-08 14:14:44 16322599 some/other/object
2015-04-29 12:09:29 32768 yet-another-object.sh
他們通過按鍵的字母順序排序,但第一列是最後修改時間。快速sort
將按日期重新排序:
$ aws s3 ls $BUCKET --recursive | sort
2015-04-29 12:09:29 32768 yet-another-object.sh
2015-05-05 15:36:17 4 an_object.txt
2015-06-08 14:14:44 16322599 some/other/object
tail -n 1
選擇最後一排,和awk '{print $4}'
提取第四列(對象的名稱)。
$ aws s3 ls $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}'
some/other/object
最後但並非最不重要的,丟棄到aws s3 cp
下載對象:
$ KEY=`aws s3 ls $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}'`
$ aws s3 cp s3://$BUCKET/$KEY ./latest-object
這裏是一個bash腳本創建基於@ error2007s的答案。這個腳本需要您的AWS簡介和水桶名作爲變量,並下載最新的對象在你的〜/ Downloads文件夾:
#!/bin/sh
PROFILE=your_profile
BUCKET=your_bucket
OBJECT="$(aws s3 ls --profile $PROFILE $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}')"
aws s3 cp s3://$BUCKET/$OBJECT ~/Downloads/$OBJECT --profile $PROFILE
你是什麼東西的腳本會用? SDK,CLI或其他東西?另外你怎麼命名後面的文件在S3 – error2007s
你最近的意思是什麼?不要這些文件有不同的名字? – Shibashis
你使用s3文件版本? – Shibashis