ファイルを解凍し、自動的にAWS S3バケットに移動する必要があります。

ファイルを解凍し、自動的にAWS S3バケットに移動する必要があります。

Ubuntuにはサンプルディレクトリがあります。

/home/ubuntu/mainfiles/

毎日zipファイルのみがアップロードされます。このファイルを解凍し、抽出したファイルをS3バケットに移動する必要があります。解凍された各ファイルのファイルは、5分間隔でs3に移動する必要があります。また、重複したファイルがs3にアップロードされないようにする必要があります。

どのようにスクリプトを書くことができますか?

私が現在やっていることは

  • /home/ubuntu/mainfiles/5分ごとに最も古いファイルがディレクトリからコピーされ、ディレクトリcronに保存されます。temp1
  • その後、ディレクトリからすべてのファイルを解凍し、temp1抽出したファイルをtemp2ディレクトリに移動しました。
  • 最後に、temp2ディレクトリ内のすべてのファイルをs3に移動しました。

temp1しかし、上記の方法は毎回フォルダを整理する必要があるため失敗する可能性があります。また、ファイル名を取得して任意の名前に名前を変更してからs3に移動する方法がわからないため、重複ファイルがs3に移動される可能性があります。

誰かが正しいアプローチでこれにデモシェルスクリプトを提供できますか?

ベストアンサー1

簡単に言えば、bashを使用して自動化できます。

#!/bin/bash
DIR='/home/ubuntu/mainfiles'
s3_DIR='/mnt/s3bucket'
for i in $DIR/*.zip;do
    unzip $DIR/$i.zip -d $S3_DIR/ && mv $DIR/$i.zip $DIR/$i.zip.done # extract and mark
    fdupes -dN $S3_DIR  # remove duplicate files
done

これをcronjob @ 5分ごとに追加してください。

おすすめ記事