リモートファイルのリストがあります。私は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