gpt4 book ai didi

linux - 无法从脚本 .sh 中删除 .tgz 文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:12 25 4
gpt4 key购买 nike

那里:我创建了一个 .sh 脚本,在其中创建 mongodb 数据库的备份。当我创建备份时一切都很好,问题是它没有消除以前的备份(我每天都会消除5天前的备份)。这是我的脚本:

#!/bin/bash
BACKUPS_DIR="/path/to/backups"
TIMESTAMP=`date +%d-%m-%y`
BACKUP_NAME="BACKUP-$TIMESTAMP"
mongodump --port 27017 --out $BACKUP_NAME
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
rm -rf $BACKUP_NAME
DATE_TO_DELETE=`date -d "$date -5 days" +%d-%m-%y`
FILE_TO_DELETE="BACKUP-$DATE_TO_DELETE"
rm -rf $FILE_TO_DELETE.tgz

当我使用运行脚本时./script_name.sh一切工作正常。当我将其添加到 crontab 时,它会创建备份,但不会删除 5 天前的备份。

感谢您的帮助。

最佳答案

您应该修改脚本以确保从正确的目录运行 rm -fr。否则你可以删除你不想删除的东西(问我怎么知道......!)。 Crontab 不会从其所在的目录运行脚本。

所以如果你这样做:

cd $(which script_name.sh)
./script_name.sh

一切都很好。但 crontab 不执行 cd 操作。请注意 tar 命令如何正常工作,因为您在目标文件中指定了 $BACKUP_DIR

所有这些都是为了说这样做:

#!/bin/bash
BACKUPS_DIR="/path/to/backups"
TIMESTAMP=`date +%d-%m-%y`
BACKUP_NAME="BACKUP-$TIMESTAMP"
mongodump --port 27017 --out $BACKUP_NAME
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
rm -rf $BACKUP_NAME
DATE_TO_DELETE=`date -d "$date -5 days" +%d-%m-%y`
FILE_TO_DELETE="BACKUP-$DATE_TO_DELETE"

rm -rf $BACKUPS_DIR/$FILE_TO_DELETE.tgz

另一种可能性是使用 find 删除 $BACKUPS_DIR 中所有超过 5 天的文件。

关于linux - 无法从脚本 .sh 中删除 .tgz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51712276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com