在 Yunohost 上备份 crontabs
YunoHost通常已经知道需要备份什么。但是,如果您进行了手动更改,例如在YunoHost应用程序系统之外安装了应用程序,您可能希望扩展YunoHost的机制以指定其他要备份的文件。
我使用borg作为备份方法,并在检查归档(以 _auto_conf
和 _auto_data
为前缀)后发现crontab文件未包含在内。
阅读官方文档后,我成功备份了它们。
步骤
只需两个钩子文件,这对于除borg以外的备份方法也适用。
备份中将包括:
-
/var/spool/cron/crontabs
所有用户的crontab -l
- 两个钩子文件
注意:
- 所有操作均以 root 用户执行。
- 如果更改钩子文件的名称,请相应调整文件内容。
创建钩子文件夹
mkdir -p /etc/yunohost/hooks.d/{backup,restore}
创建备份钩子
/etc/yunohost/hooks.d/backup/99-conf_custom
内容
#!/bin/bash
# 引入YNH助手
source /usr/share/yunohost/helpers
ynh_restore_dest (){
YNH_CWD="${YNH_BACKUP_DIR%/}/$1"
cd "$YNH_CWD"
}
# 在子命令错误或未设置变量时退出钩子
ynh_abort_if_errors
# Crontabs
ynh_restore_dest "conf/custom/crontabs"
ynh_restore_file "/var/spool/cron/crontabs"
# 其他(包括此文件)
ynh_restore_dest "conf/custom/misc"
ynh_restore_file "/etc/yunohost/hooks.d/backup/99-conf_custom"
ynh_restore_file "/etc/yunohost/hooks.d/restore/99-conf_custom"
创建还原钩子
/etc/yunohost/hooks.d/restore/99-conf_custom
内容
#!/bin/bash
# 引入YNH助手
source /usr/share/yunohost/helpers
ynh_backup_dest (){
YNH_CWD="${YNH_BACKUP_DIR%/}/$1"
mkdir -p $YNH_CWD
cd "$YNH_CWD"
}
# 在子命令错误或未设置变量时退出钩子
ynh_abort_if_errors
# Crontabs
ynh_backup_dest "conf/custom/crontabs"
ynh_backup "/var/spool/cron/crontabs"
# 其他(包括此文件)
ynh_backup_dest "conf/custom/misc"
ynh_backup "/etc/yunohost/hooks.d/backup/99-conf_custom"
ynh_backup "/etc/yunohost/hooks.d/restore/99-conf_custom"
分配适当的文件权限
这可能是不必要的,但我为了安全起见执行了这些操作。
chmod 740 /etc/yunohost/hooks.d/{backup,restore}/99-conf_custom
启动备份以查看钩子是否有效
对于 borg 来说,启动备份只需要简单执行 systemctl start borg
这些文件将包含在 _auto_conf
前缀的归档中,这将列出 ARCHIVE_NAME
中的文件:
app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_CHANGE_THIS -oStrictHostKeyChecking=yes " borg list "$(yunohost app setting $app repository)::ARCHIVE_NAME | grep crontabs"