自动唤醒未连接以太网的笔记本电脑

自动唤醒未连接以太网的笔记本电脑

我正在寻找一个自动备份系统,我喜欢 bacula。我有 3 台笔记本电脑和一台台式电脑需要定期备份。现在我不想让它们整晚运行只是为了进行备份,所以我在想我可以使用局域网唤醒让 bacula 唤醒机器,然后进行备份,然后关闭它们。虽然这可能适用于以太网上的设备,但它不适用于 wifi 上的笔记本电脑。那么,是否有可能让笔记本电脑计划自动从挂起或关机状态唤醒?

或者,如果是在某个时间之后,是否可以插入关机命令并调用 bacula 主管立即启动备份?

我是使用脚本控制 Linux 系统的新手,因此非常感谢任何关于如何以及从哪里开始的提示。

非常感谢您的帮助、意见和想法。

答案1

我的答案并没有从 SO 移过来。嗯。

您可能想要搜索的命令是睡眠,尽管它可能是 Debian 特有的。

答案2

这是我的备份解决方案,它由两个脚本组成:

1.) 我用以下代码替换了标准 /usr/lib/hal/scripts/hal-system-power-suspend 脚本,以确保每次计算机进入睡眠状态(例如关闭盖子)时它都会唤醒进行备份:

#!/bin/sh

#Determine when to wake up computer
waketime="01:30"
waketimesec="0"

if [ `date --date=$waketime +%s` -gt `date +%s` ]
then
  echo today
  waketimesec=`date --date=$waketime +%s`
else
  echo tomorrow
  waketimesec=`date --date="tomorrow $waketime" +%s`
fi


#Determine switch sleep modus to choose
state=`cat /proc/acpi/ac_adapter/AC0/state | grep on-line`
if [ "$state" = '' ]
then
  echo Computer on battery mode
  sudo /usr/sbin/pm-suspend           
else
  echo Computer on AC mode
  sudo rtcwake -m mem -t $waketimesec

  state=`cat /proc/acpi/ac_adapter/AC0/state | grep on-line`
  if [ "$state" = '' ]
  then
  sudo /usr/sbin/pm-suspend
  fi
fi

请注意,如果拔下交流适配器且计算机依靠电池运行,则不会进行备份。

2.) 第二个脚本执行实际备份,并在唤醒几分钟后由 cron 触发。它唤醒远程目标计算机,安装 smbfs 共享,使用 backintime 执行差异备份并关闭远程计算机,然后让本地 PC 重新进入睡眠状态:

#!/bin/bash
echo Wake up destination computer and sleep...
wakeonlan <mac_address>
date
echo ..sleep for 90s #the time your computer needs to boot and start smb
sleep 90
echo Mounting share..
sudo smbmount //<ip_address>/backup_folder /home/<user>/local_folder/ -o username=<user>,password=<pass>,file_mode=0777,dir_mode=0777,uid=1000,user
echo ..share mounted!
echo Starting backup!
backintime --backup > backintime.log
echo Backup finished, giving it time to settle..
sleep 10
echo Unmounting share..
sudo smbumount /home/<user>/local_folder/
sleep 5
echo Shutdown remote computer...
ssh '<user>@<ip_address>' "sudo shutdown -h now"
echo Going back to sleep..
/usr/lib/hal/scripts/hal-system-power-suspend

对于每个 sudo 命令,使用 visudo 授予超级用户权限。使用 publickey 授权可避免 ssh 命令出现密码提示。

现在,您每晚都可以以最低的功耗获得最新备份。希望这对某些人有所帮助。

答案3

那么,是否可以让笔记本电脑自动从挂起或关机状态唤醒?

是的,这是可能的。我很久以前就做过这个了——但我记不清具体怎么做了,但这并不难,我记得有一个配置文件,你只需编辑一下。

尝试查看内核配置,应该与 APM/ACPI 相关。祝你好运。

编辑:找到了命令,它是apmsleep。我想这就是你要找的。

答案4

实现此目的的最简单方法可能是在 BIOS 中设置唤醒定时器。这样计算机就会始终在备份时间启动。然后编写一个脚本以确保无人登录,并且备份已完成以便关机。

相关内容