![rsync cronjob 白天成功,但晚上总是找不到目的地。我的外部硬盘驱动器可能会“进入睡眠状态”吗?](https://linux22.com/image/226591/rsync%20cronjob%20%E7%99%BD%E5%A4%A9%E6%88%90%E5%8A%9F%EF%BC%8C%E4%BD%86%E6%99%9A%E4%B8%8A%E6%80%BB%E6%98%AF%E6%89%BE%E4%B8%8D%E5%88%B0%E7%9B%AE%E7%9A%84%E5%9C%B0%E3%80%82%E6%88%91%E7%9A%84%E5%A4%96%E9%83%A8%E7%A1%AC%E7%9B%98%E9%A9%B1%E5%8A%A8%E5%99%A8%E5%8F%AF%E8%83%BD%E4%BC%9A%E2%80%9C%E8%BF%9B%E5%85%A5%E7%9D%A1%E7%9C%A0%E7%8A%B6%E6%80%81%E2%80%9D%E5%90%97%EF%BC%9F.png)
注意:这个问题有一个简单的解决方案(即,只需在白天备份数据!),所以这不是一个紧迫的问题。但我在堆栈交换和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))就会自动进入睡眠状态。
我可以简单地禁用计算机上的所有省电工具,但在尝试如此激烈的事情之前,我正在阅读一些更优雅的解决方案的工具sdparm
。hdparm