备份一些文件和文件夹到 Ubuntu 中的 flash 中

备份一些文件和文件夹到 Ubuntu 中的 flash 中

我正在使用以下脚本来备份一些文件和文件夹。

#!/bin/sh
#backup.sh  
zip -r backup_`date +%F | sed -e "s/-/_/g"`.zip \
  /home/xralf/.local/share/Anki2/my_deck \
  /home/xralf/.local/share/Anki2/addons \
  /home/xralf/.local/share/Anki2/prefs.db \
  /home/xralf/books \
  /home/xralf/.mozilla \
  /home/xralf/.vim \
  /home/xralf/.vimrc \
  /home/xralf/.vim_bookmarks \
  /home/xralf/.NERDTreeBookmarks \
  /home/xralf/.bashrc \
  /home/xralf/.bash_aliases \
  /home/xralf/.bash_profile \
  /home/xralf/.profile \
  /home/xralf/.Xmodmap \
  /home/xralf/Downloads/sitedelta-backup.json
  /home/xralf/.config/i3/config \
  /usr/share/X11/xkb/symbols/us \

我手动运行脚本,然后将文件复制到闪存驱动器。

我想改进这个过程,以便能够更频繁地备份。目标是在闪存驱动器上备份这些文件和文件夹。

我希望只需按下一个按钮或启动一个命令,它就会将所有选定的文件和文件夹复制到闪存驱动器,但我希望每天只备份已更改的内容(同步、添加/删除),这样会很快。每周(或每月)一次,我想用我的脚本创建完整备份backup.sh

您推荐什么(脚本或应用程序)?

答案1

我建议您创建一个特定的服务,每次插入闪存驱动器时都会触发该服务。该服务将触发特定的 shell 脚本来备份您想要的内容,并可能卸载驱动器以使其内容保持完整。您还可以创建两个不同的服务,一个用于定期备份,另一个用于每周备份。这里的优点在于您甚至不需要按下按钮或手动启动脚本。一切都会自动发生。

进一步来说:

  1. 创建服务(文本文件):(/home/ralf/.config/systemd/user/backup.service我假设ralf是您的用户名)。将其用作用户特定服务非常重要,这样才能发出通知。

该文件包含以下内容:

[Unit]                                                                                                                                                                       
Description=Backup files to flash drive
Requires=media-ralf-YourFlash.mount
After=media-ralf-YourFlash.mount

[Service]
Type=notify
ExecStart=/home/ralf/backup.sh
Environment="DISPLAY=:0"
RemainAfterExit=yes
Restart=always
RestartSec=60

[Install]

# This is necessary to start the program when the graphical environment is ready, enabling 'notify-send'
WantedBy=graphical-session.target
WantedBy=media-ralf-YourFlash.mount
  1. 你的剧本backup.sh会是这样的

喜欢:

#!/bin/bash

# Will perform a sync of /home/user/ to flash drive
notify-send "Mounted"
# Rsync
rsync /home/ralf/ /media/ralf/YourFlash/
# Other rsync commands or your zip command.
...
umount /media/ralf/YourFlash
notify-send "Backup complete.  Please remove flash drive."
exit 0
  1. 启用您的服务,以便它在启动时启动

sudo systemctl --user enable backup.service

  1. 如果想直接使用,则启动它:

sudo systemctl --user start backup.service

编辑

  1. WantedBy在部分中添加了一行Install。在启用服务之前创建此行非常重要。
  2. Type=notify还添加了RemainAfterExit=yes确保在拔下/重新插入 USB 密钥时服务重新启动的功能。

相关内容