rsync cronjob 白天成功,但晚上总是找不到目的地。我的外部硬盘驱动器可能会“进入睡眠状态”吗?

rsync cronjob 白天成功,但晚上总是找不到目的地。我的外部硬盘驱动器可能会“进入睡眠状态”吗?

注意:这个问题有一个简单的解决方案(即,只需在白天备份数据!),所以这不是一个紧迫的问题。但我在堆栈交换和askubuntu上进行了广泛的搜索,但没有看到这个问题发布,我有点好奇是否有人知道快速修复。

我一直在使用 cron 作业将家庭和办公室计算机上的数据备份到外部硬盘驱动器。在家用计算机上一切都按预期工作,但办公室计算机(运行 Ubuntu 22.04.3 的 Dell OptiPlex,备份到 Western Digital USB 硬盘)有一个我无法弄清楚的有趣的病态。

当我测试 cronjob 时,我设置了所需的时间,即未来一分钟,等待时钟改变,然后查看作业是否运行良好。但是,当我将作业设置为在半夜运行时,完全相同的作业失败并显示以下消息:

No such file or directory (2) "/media/hb/a993cec9-4360-4000-ad03-394b2051f0cc1"
rsync error: error in file IO (code 11) at main.c(791) [Receiver=3.2.7]

因此,每天早上我上班时都会检查备份是否运行,看看它们是否失败,进行测试运行以找出原因,然后一切正常。当计算机不活动时,外部硬盘驱动器是否有可能“进入睡眠状态”?计算机没有睡眠,我在前一天晚上的零点时间通过 ssh 远程访问了它。我从来不需要在早上主动安装驱动器,每当我坐在电脑前时它似乎总是在那里。

我的 crontab 看起来像这样:

SHELL=/bin/bash
0 1 * * * /snap/bin/offlineimap -c /home/hb/snap/offlineimap/297/.offlineimaprc 
0 2 * * * /home/hb/backup_office_computer.sh daily > /home/hb/backup_daily.log 2>&1
0 3 * * 6 /home/hb/backup_office_computer.sh weekly > /home/hb/backup_weekly.log 2>&1

# -- daytime tests here
48 9 * * * /home/hb/backup_office_computer.sh weekly > /home/hb/backup_weekly.log 2>&1

Offlineimap 作业始终有效(因此 cron 没问题),白天测试 rsync 作业始终有效(因此 shell 脚本没问题),但凌晨 2 点和凌晨 3 点备份作业总是找不到外部硬盘。

脚本backup_office_computer.sh是:

#!/bin/bash

WD_path="/media/hb/a993cec9-4360-4000-ad03-394b2051f0cc1"

# print start time
now=$(date)
echo "========= starting backup at: $now ========="
echo "========= running as: $(whoami) ========="

# backup home directory
rsync -aAXP --delete --exclude '*.Trash-1000' --exclude 'tmp*' --exclude '.cache' --exclude '.dbus' --exclude '.gvfs' /home/hb $WD_path/home-backup-$1

echo "========= home backup completed. Starting LSS: $now ========="

if [ "$(ls -A /media/hb/LSS)" ]; then
        # LSS is mounted (LSS is better for long-term storage than quick edits. Once a week should be enough)
        if [ $1 == "weekly" ]; then
                rsync -aAXP --delete /media/hb/LSS/* $WD_path/LSS-backup-$1/
        else
                echo "Ignoring LSS: We only back up weekly."
        fi
else
        echo "/media/hb/LSS is empty. Drive not mounted"
fi

# print end time
now=$(date)
echo "====== backup finished at at: $now ========"

有关丢失目录的夜间错误消息始终指的是目标驱动器,/media/hb/a993cec9-4360-4000-ad03-394b2051f0cc1而不是每周备份的其他已安装驱动器/media/hb/LSS/

=====更新(2023/11/22)=====

自从发帖以来,我尝试通过 ssh 连接到办公室计算机,在离开计算机 5 分钟内,外部驱动器消失并且无法通过它找到,lsblk因此我无法安装它。当然,里面的文件夹和文件也会消失,无法通过 看到ls

当我实际返回计算机时,只要我触摸键盘或鼠标,它就会开始转动,当我解锁屏幕时,可以再次找到驱动器lsblk并且它已自动安装,因此所有文件都可以ls通过熟悉的地点。

作为测试,我将系统首选项更改为等待 15 分钟(而不是 5 分钟)不活动,屏幕就会变暗并锁定。然后,我可以在离开 10 分钟后通过 ssh 登录访问该驱动器,但据我所知,15 分钟后该驱动器再次消失并变得无法安装。

因此,我认为只要屏幕变暗并锁定,外部驱动器(型号:WD Elements 25A3 (1030))就会自动进入睡眠状态。

我可以简单地禁用计算机上的所有省电工具,但在尝试如此激烈的事情之前,我正在阅读一些更优雅的解决方案的工具sdparmhdparm

相关内容