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分ごとに追加してください。