宝塔面板数据备份双保险:新增群晖 NAS WebDAV 备份方案

    我的博客部署在阿里云服务器,一直使用宝塔面板进行管理,此前已配置阿里云本地备份。为进一步提升数据安全性,应对各类不确定风险(如服务器故障、误操作等),新增群晖 NAS 作为异地备份节点,通过 WebDAV 协议实现数据同步备份。以下是详细操作步骤,流程清晰易上手:

    一、群晖 NAS 端配置

    1. 创建专用备份用户

    1. 登录群晖 DSM 管理界面,进入「控制面板」→「用户与群组」;
    2. 点击「创建用户账号」,按提示设置用户名、密码(建议强密码),其他基础信息按需配置;
    3. 用户创建完成后,打开群晖「文件管理器」,进入该用户的「home」文件夹(默认自动生成,与用户名对应);
    4. 在「home」文件夹内新建子文件夹「bt_backup」,作为宝塔备份文件的存储目录(后续宝塔将直接备份至此路径)。

    2. 安装并配置 WebDAV Server 套件

    1. 进入群晖「套件中心」,搜索「WebDAV Server」,点击安装并等待完成;
    2. 打开已安装的「WebDAV Server」,进入「设置」界面:
      • 「端口设置」:配置自定义端口;
      • 「高级设置」:勾选「启用 DavDepthInfinity」(关键配置,确保宝塔能正常上传大文件及创建多级目录);

    二、宝塔面板端配置

    1. 安装并配置 WebDAV 远程存储

    1. 登录宝塔面板,进入「软件商店」→搜索&安装「WebDav存储」
      • host」:填写「IP:端口」
      • 「用户名 / 密码」:输入群晖端创建的专用备份用户账号和密码;
      • 「存储位置」:填写「/home/bt_backup」

    2. 配置计划任务实现自动备份

    1. 进入宝塔面板「计划任务」→「添加任务」
      • 备份存储:选择「WebDAV 」存储

    三、注意事项

    曾遇到过如下报错或者类似报错,大部分是因为群晖没有启用DavDepthInfinity

    Traceback (most recent call last):
      File "/www/server/panel/pyenv/lib/python3.7/site-packages/webdav4/client.py", line 372, in _request
        http_resp.raise_for_status()
      File "/www/server/panel/pyenv/lib/python3.7/site-packages/httpx/_models.py", line 749, in raise_for_status
        raise HTTPStatusError(message, request=request, response=self)
    httpx.HTTPStatusError: Client error '403 Forbidden' for url 'http://XXXX:XXXXX/home'
    For more information check: https://httpstatuses.com/403
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/www/server/panel/script/backup.py", line 58, in <module>
        backup.backupDatabase(sys.argv[2], sys.argv[3], echo_id)
      File "/www/server/panel/script/backup.py", line 23, in backupDatabase
        self.backup_database(name, save=count, echo_id=echo_id)
      File "class/panelBackup.py", line 942, in backup_database
        res = self._cloud.upload_file(backup_path, upload_path)
      File "/www/server/panel/plugin/webdav/webdav_main.py", line 161, in upload_file
        return self.upload_file_in_chunks(file_name, upload_path, chunk_size=1 * 1024 * 1024, upload_speed=upload_speed)
      File "/www/server/panel/plugin/webdav/webdav_main.py", line 175, in upload_file_in_chunks
        if not self.ensure_directories_exist(remote_dir):
      File "/www/server/panel/plugin/webdav/webdav_main.py", line 133, in ensure_directories_exist
        if not self.client.exists(current_path):
      File "/www/server/panel/pyenv/lib/python3.7/site-packages/webdav4/client.py", line 549, in exists
        self.propfind(path)
      File "/www/server/panel/pyenv/lib/python3.7/site-packages/webdav4/client.py", line 318, in propfind
        http_resp = self.with_retry(call)
      File "/www/server/panel/pyenv/lib/python3.7/site-packages/webdav4/func_utils.py", line 44, in wrapped_function
        return func()
      File "/www/server/panel/pyenv/lib/python3.7/site-packages/webdav4/func_utils.py", line 68, in wrapped
        return func(*args, **kwargs)
      File "/www/server/panel/pyenv/lib/python3.7/site-packages/webdav4/client.py", line 374, in _request
        raise HTTPError(http_resp) from exc
    webdav4.client.HTTPError: received 403 (Forbidden)

     

     

    THE END
    分享
    二维码
    打赏
    海报
    宝塔面板数据备份双保险:新增群晖 NAS WebDAV 备份方案
    我的博客部署在阿里云服务器,一直使用宝塔面板进行管理,此前已配置阿里云本地备份。为进一步提升数据安全性,应对各类不确定风险(如服务器故障、误操作等……
    <<上一篇
    下一篇>>