我需要帮助将以下文件存档在文件名中的日期。我还要在100天后删除存档。例如,我试图存档所有csv ... 2018,保存存档100天。我试图删除
AUSDUVZRO1Y_pm00hr_20180309.000005_6.csv
KYXMNCDTO6Y_pm00hr_20180309.040006_10.csv
example:
11randomletters_6randomalphanumeric_YYYYMMDD.randomnumbers_randomnum.csv
我尝试过以下示例,但无效。有人可以帮我解决这个问题吗?
#!/bin/bash
DEST_DIR=/tmp/arc/
OLD_FILES=$(date --date="30 days ago" +%s)
echo "$(date -u) START OF ARCHIVE SCRIPT " >> "${LOGS}"
for files in /tmp/archive/*.csv; do
DIFF=$(date --d="$(echo "$files" | cut -d_ -f3 | cut -d. -f1)" +%s)
if [ "$DIFF" -lt "$OLD_FILES" ]; then
tar --create --gzip --file="$DEST_DIR$files -P $SRC_DIR"
fi
done
摘要:例如今天的日期是2018年3月27日。我想归档2018年3月20日收到的所有csv文件。同时保存此归档100天并删除每天100天的归档文件。
注意:文件需要根据文件名中的日期进行存档,而不使用find mtime +30 days
。
我无法帮助自己实现这一目标。
答案 0 :(得分:1)
将您要存档的档案和csv放在tmp
下100天是个不错的主意。找到另一个地方。我假设,变量topdir
将是您的新顶级目录。
其余的,就像你说你想要它一样。
date_to_archive=$(date --date="7 days ago" '+%Y%m%d')
date_to_del=$(date --date="100 days ago" '+%Y%m%d')
#I want to archive all the files csv files received on 20th March 2018
tar cvzf "$topdir"/arc/$date_to_archive.tgz "$topdir"/archive/*_$date_to_archive.*.csv
#delete the archive every day which is 100 days old
rm "$topdir"/arc/$date_to_del.tgz
如果你每天都在cron中运行
23 23 * * * /bin/bash /where/the/script/is
那不会做你想要的吗?