关机前将工作目录备份到 git

关机前将工作目录备份到 git

我使用的是 Ubuntu 16.04。我有一个名为 Work 的目录,我想在每次关闭计算机电源时将其备份到 github。我已经编写了备份脚本,它工作正常,但我无法在关闭之前运行它。请帮忙。这是backup_work.sh的内容

cd /home/kaustab/Work
git add .
git commit -m "Daily Backup"
mkdir /home/kaustab/test 
git push origin master
echo "Backed up"
read -n 1 -s -r -p "Press any key to continue"

答案1

您可以按照说明在关机时运行脚本这里

基本上,您可以将脚本放入 中/etc/rc6.d/,并使其可执行。这种方法的一个缺点是上述目录中的任何脚本都将以 root 用户身份运行,这可能会更改文件权限并在以后引起问题。另一种方法是将脚本保留在主目录中,然后将以下脚本添加到/etc/rc6.d

#!/bin/sh

sudo -u kaustab /home/kaustab/backup_work.sh
exit 0

最后,您还应该删除对 的调用read(或添加超时),因为它会在关闭之前要求您按键并阻止关闭。

系统方法

上面的 rc6.d 脚本方法是在关机时运行脚本的传统 sysv-init 方法。对于较新版本的 Debian/Ubuntu,使用 systemd 单元文件在关机时运行脚本会更安全。

将以下脚本放入/etc/systemd/system/backup-work.service(来源)并运行sudo systemctl daemon-reload

[Unit]
Description=Backup work directory
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
User=kaustab
Group=kaustab
ExecStart=/home/kaustab/backup_work.sh  # your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target

答案2

感谢大家的帮助,但我已经成功解决了这个问题。我所做的是编辑关机.桌面在 /usr/share/applications 中并将 exec 更改为我的脚本。这是我修改的关机.桌面文件看起来像。

[Desktop Entry]
Name=Shutdown
Comment=Backup and power off the computer
GenericName=Shut Down
Exec=gnome-terminal -e /home/kaustab/.scripts/backup_work.sh
Terminal=false
Type=Application
Categories=Utility
Icon=/usr/share/unity/icons/shutdown_highlight.png
NotShowIn=GNOME-Flashback;
X-AppStream-Ignore=true
X-Ubuntu-Gettext-Domain=session-shortcuts

结束时备份工作.sh脚本我添加了行gnome-session-quit --power-off来提供电源菜单的选项。谢谢质量信息系统指出使用 ssh 而不是 https 连接到 github。我稍后会尝试这样做。

相关内容