【发布时间】:2020-04-16 08:37:29
【问题描述】:
在 Linux 中,我使用 InfluxDB,它可以备份数据库以用于存档目的。每个备份都包含一系列具有相同前缀“/tank/Backups/var/Influxdb/20191225T235655Z”的文件。和不同的扩展。
我想编写一个 bash 脚本,它首先删除最旧的现有备份,然后创建一个新备份(这里我只粘贴删除):
ls -tp /tank/Backups/var/Influxdb/* | grep -v '/$' | sed -E 's/\..+//' | \
sort -ru | sed 's/$/.*/' | tail -n +4 | xargs -d '\n' -r rm --
但是,当我以“sudo”身份运行脚本时,我得到了
rm: cannot remove '/tank/Backups/var/Influxdb/20191225T235655Z.*': No such file or directory
当我运行引用的脚本时,除了最新的部分,我得到:
/tank/Backups/var/Influxdb/20190930T215357Z.*
/tank/Backups/var/Influxdb/20190930T215352Z.*
这是正确的。另外,如果我手动编写
sudo /tank/Backups/var/Influxdb/20190930T215357Z.*
命令成功。
为什么脚本会报错?
我使用的是 Ubuntu 18.04,文件夹“/tank”是一个 ZFS 卷。
【问题讨论】:
-
您可能想研究 logrotate 而不是重新发明轮子。
-
@Robert 我认为它用于旋转日志。我要备份数据库