파일을 S3에 백업하고 Bash를 사용하여 삭제하는 방법

3175 단어 awsbashbackups3
상황이 있습니다. 컴퓨터가 파일로 가득 차 있습니다. 로그일 수도 있고 언젠가는 더 이상 필요하지 않은 중요한 데이터일 수도 있으며 제거해야 할 수도 있습니다. 나중에 필요할지 확신할 수 없기 때문에 영구적으로 삭제하고 싶지는 않습니다. 매우 저렴한 S3에 백업하고 동시에 로컬 시스템에서 삭제하는 것은 어떻습니까?

#!/bin/bash

time_in_the_past=604800 # 1 week in seconds
directory="./"
bucket_name=""
bucket_path="/"

current_time=$(date +"%s")
while read -d '' file; do
  mtime=$(stat -c %Y $file)
  difference=$((current_time-mtime))

  if [ "$difference" -gt "$time_in_the_past" ]; then
    echo "Backing up $file"
    aws s3 cp $file s3://$bucket_name$bucket_path && unlink $file
  fi
done < <(find $directory -type f -print0)


이 스크립트는 디렉터리의 파일을 읽고 지정된 시간보다 오래된 파일인지 확인하고 S3에 업로드하고 성공적이면 로컬 시스템에서 삭제합니다. 이 스크립트는 AWS CLI 을(를) 설치하고 구성했다고 가정합니다.

작동 방식을 제어하는 ​​4개의 변수가 상단에 있습니다.

  • time_in_the_past는 일주일을 초 단위로 표시하지만 원하는 값으로 변경할 수 있습니다.

  • 디렉토리는 백업이 발생할 디렉토리입니다.

  • bucket_name 파일이 업로드될 버킷 이름입니다. (a-z0-9_-)

  • bucket_path 파일이 배치될 버킷 내부의 경로입니다.

  • 이 파일을 cleanup.sh로 저장한 다음 crontab을 사용하여 X 시간마다 실행할 수 있습니다. crontab을 열려면 다음을 실행할 수 있습니다.
    crontab -e
    그런 다음 선호하는 편집기를 선택합니다(저는 보통 nano를 사용합니다). 그런 다음 끝에 crontab 줄을 배치합니다.
    30 6 * * sun /path/to/cleanup.sh30 6 * * sun는 매주 일요일 오전 6시 30분을 의미합니다. cron guru 이라는 놀라운 도구를 사용하여 cron 표현식을 시각화할 수 있습니다.

    도움이 되었기를 바랍니다. 질문이 있으시면 의견에 답변해 드릴 수 있습니다.

    좋은 웹페이지 즐겨찾기