我有一个运行 rsync 来备份某些文件的脚本。完成 rsync 后,脚本会向我发送一封包含结果的电子邮件。
如果 rsync 花费的时间少于 30 分钟至 1 小时,则邮件发送没有问题,但如果 rsync 花费的时间更长,则邮件永远不会发送。
Rsync 永远不会超过 3-4 小时(在最坏的情况下:干净的新备份)。该脚本被编程为每天凌晨 2 点执行。所以这不可能是进程重叠的问题。
就像脚本在一定时间后死亡,当命令完成时间太长并且不继续执行命令时。
抱歉,如果这是一个重复的问题,但我还没有在网上找到相关信息。
非常感谢!
编辑:系统运行Linux Mint 20
编辑2:此问题也出现在Ubuntu Server 中。脚本文件位于 sudoers 中,允许在没有密码的情况下以 sudo 的方式执行它。
编辑3:脚本代码:
#!/bin/bash
script_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
now=$(date +$1)
path="/media/backups/"$now
log_file="/media/backups/logs/"$(date +"%Y%m%d_%H%M%S")
log_folder=$script_path"/logs"
if [ ! -d $log_folder ]; then
mkdir -p $log_folder
fi
{
echo ""
echo ""
date +"%d %m %Y - %H %M %S"
echo ""
echo ""
if [[ ! -d $path ]]; then
sudo mkdir $path
fi
sudo rsync -avprh --delete /media/disk/ $path
sudo rsync -avprh --delete /media/disk2 $path"/disk2/"
sudo /usr/bin/touch $path
} > $log_file 2>&1
if grep -i -q "error" $log_file; then
/usr/bin/php /var/www/email.php "[email protected]" "Backup ERROR" "<pre>$(<$log_file)</pre>"
else
/usr/bin/php /var/www/email.php "[email protected]" "Backup OK" "<pre>$(<$log_file)</pre>"
fi