Так что это мое решение для резервного копирования, оно состоит из двух сценариев:
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 и выключает удаленный компьютер, а затем переводит локальный компьютер в спящий режим:
#!/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.
Теперь у вас есть свежие резервные копии каждую ночь с минимальным энергопотреблением. Надеюсь, это кому-нибудь поможет.