我在 ubuntu 中有一个目录示例:
/home/ubuntu/mainfiles/
每天只上传 zip 文件。我需要解压缩这些文件并将提取的文件移动到 S3 存储桶。每个解压文件的文件应以 5 分钟的间隔移动到 s3。我还需要确保重复的文件不会上传到 s3。
我该如何为此编写脚本?
我目前正在做的是
/home/ubuntu/mainfiles/
每 5 分钟从目录复制最旧的文件cron
,然后将其存储在temp1
目录中。- 然后我从目录中解压缩所有文件
temp1
并将提取的文件移动到temp2
目录中。 - 最后我将
temp2
目录中的所有文件移动到 s3。
temp1
但我认为上述方法可能会失败,因为我每次都必须清理文件夹。另外,重复的文件可能会移动到 s3,因为我不知道如何获取文件名并使用随机名称重命名它,然后移动到 s3。
有人可以用正确的方法为此提供一个演示 shell 脚本吗?
答案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 分钟一次