避免在 cron 计划的备份的同时编辑文件,我想出了一个办法:
在备份之前,发送一个桌面通知,例如
notify-send -t 0 "Ready for backup"
,让我准备(将编辑保存到文件,并插入外部硬盘驱动器作为备份目的地),当我准备好时,我会在通知上单击“确定”,然后备份开始。备份完成后,可以选择通知我备份命令的退出值和备份所需的时间,以便我可以恢复编辑。
我怎样才能在 bash 和 Ubuntu 中做到这一点?这包含一个更小的问题: 如何在 cron 中安排桌面通知?
如果您有更好的方法来实现我一开始的目标,请随意。
我的尝试。
我添加* * * * * /home/t/mybackup.sh
到,在那里我编写了一个包装备份和通知的crontab -e
bash 脚本:/home/t/mybackup.sh
#! /usr/bin/env bash
export DISPLAY=:0
/usr/bin/notify-send -t 0 "Ready for backup?" &&
dest=/tmp/`date +%Y.%m.%d_%H:%M:%S`&&
mkdir -p "$dest" &&
timetake=`time /usr/bin/rsync -a /home/t/program_files/dir/ "$dest"/ 2>"$dest"/rsync-errors`; exitvalue=`echo $?`
/usr/bin/notify-send -t 0 "Finished backup!" "time taken: " $timetake " exit value:" $exitvalue
它存在以下问题:
我想发出第一个通知“准备好备份了吗?”备份之前等待我的回复。即理想情况下,如果我单击“确定”,那么它可以继续备份。如果我单击“取消”,则不应运行备份和脚本中的以下命令。
但在我当前的脚本中,第一个
notify-send
不会等待我的响应并继续备份。即使我可以让它等待我的响应,我也不知道如何在我的脚本中编码来获取我是否单击“确定”或“取消”的响应。
notify-send
备份完成后不会出现第二个“完成备份!...”。