大家好!也许你们可以帮我解决这个问题:我已经在 Cron 中设置了每日备份轮换,每天凌晨 4 点运行。该脚本并不复杂(见下文),当我自己执行它时,它可以正常工作。但是,当我在 Cron 上安排它时,脚本运行了大约半小时,然后停止(没有邮件,没有警告,它只是在某个时候停止复制文件)。
你知道为什么会发生这种情况吗?备份文件夹大约有 38GB 大,脚本运行需要将近一个小时。我猜是某种运行时限制,但这只是一个想法。
最后,但并非最不重要的一点是,这是脚本。它保留一个包含 7 个每日备份的“存档”文件夹:
#!/bin/bash
NEW=`date +%Y%m%d`
NUMBER=7
function erase_old()
{
while (( $# > $NUMBER )); do
rm -rf "$1"
shift
done
}
mkdir /backup/archive/$NEW
cp -vrp /backup/current/* /backup/archive/$NEW
erase_old /backup/archive/*
答案1
没有把握为什么它快要死了,但我可以建议你采用另一种方法来进行滚动备份吗?
尝试使用而不是今天的日期,今天的天作为文件名。这样您就不必删除旧文件,它们只会被覆盖。(或者您可以删除<today>
,然后写入新文件。)
要获取今天的值,请执行以下操作:
$FNAME=`date +%A`
答案2
$CANT
您正在测试未在任何地方设置的变量。
我不知道ulimit -t
这是否妨碍了你。
答案3
这可能是权限问题;crontab 条目是否在可以从命令行成功运行脚本的同一用户下?