파일의 압축을 풀고 자동으로 AWS S3 버킷으로 이동해야 합니다.

파일의 압축을 풀고 자동으로 AWS S3 버킷으로 이동해야 합니다.

우분투에는 예제 디렉토리가 있습니다.

/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분마다 추가하세요.

관련 정보