원격 파일 목록이 있습니다. 나는 curl
이 파일들을 사용하거나 접근 할 수 있습니다 Ansible
. 목록은 다음과 같습니다.
sqldbd_12_30_2020_14_29_30.tar.gz
sqldbd_12_30_2020_14_52_32.tar.gz
sqldbd_12_31_2020_14_57_49.tar.gz
sqldbp_12_31_2020_16_00_40.tar.gz
sqldbd_01_01_2021_16_29_57.tar.gz
sqldbd_01_02_2021_18_00_35.tar.gz
sqldbd_01_03_2021_20_00_33.tar.gz
sqldbd_01_03_2021_22_00_37.tar.gz
sqldbf_01_04_2021_00_00_37.tar.gz
sqldbc_01_06_2021_02_00_33.tar.gz
날짜 형식은 다음과 같습니다( %m_%d_%Y_%H_%M_%S
사용자 정의 날짜 형식). curl DELETE
7일이 지난 파일에 대해서만 실행하고 싶습니다 . 현재 나는 다음과 같이 글을 쓰고 있습니다.
#!/bin/bash
auth_token=$1
storage_url=$2
compare_date=$(date -d '-7 days' '+%m_%d_%Y_%H_%M_%S')
for line in $(cat backup_list.txt); do
timestamp=$(echo "${line%.*.*}" | cut -d '_' -f 2,3,4,5,6,7)
if [[ "$timestamp" < "$compare_date" ]]; then
curl -k -X DELETE "${storage_url}/sql_backups/$line" -H "X-Auth-Token: ${auth_token}"
fi
done
불행히도 예상대로 작동하지 않아 모든 파일이 삭제되었습니다. 백업 스크립트가 날짜 문자열을 다른 형식으로 생성하도록 강제할 수 있다고 생각합니다.
답변1
vars를 yyyymmddhhmmss 또는 posix 타임스탬프로 변환하면 비교가 작동합니다.
#!/bin/bash
auth_token=$1
storage_url=$2
# posix epoch
compare_date=$(date -d '-7 days' +'%s')
for line in $(cat backup_list.txt); do
timestamp=$(echo "${line%.*.*}" | cut -d '_' -f 2,3,4,5,6,7)
# YYYYMMDD hh:mm:ss
datetime="${timestamp:6:4}${timestamp:0:2}${timestamp:3:2} ${timestamp:11:2}:${timestamp:14:2}:${timestamp:17:2}"
# posix epoch
timestamp=$(date -u -d "$datetime" +'%s')
if [[ "$timestamp" < "$compare_date" ]]; then
curl -k -X DELETE "${storage_url}/sql_backups/$line" -H "X-Auth-Token: ${auth_token}"
fi
done