WebDAV
明白了,你现在想走 WebDAV 路径,把群晖共享目录挂载到你的 Arch Linux,然后再用 rsync 进行备份。下面我给你一个详细的方案。
1️⃣ 安装 davfs2
在 Arch Linux 上可以通过 pacman 安装:
sudo pacman -S davfs2
davfs2可以把 WebDAV 共享挂载成普通目录。
2️⃣ 创建挂载点
选择一个本地目录作为挂载点,例如:
mkdir -p ~/syno-nfs
3️⃣ 挂载 WebDAV
手动挂载命令:
sudo mount -t davfs http://192.168.10.2:5005/nfs/ ~/syno-nfs
或者如果你用 HTTPS:
sudo mount -t davfs https://192.168.10.2:5005/nfs/ ~/syno-nfs
-
系统会提示输入用户名和密码(就是你之前在群晖 WebDAV 用户设置的用户名密码,例如
ding)。 -
注意:如果挂载失败,可以加上
-o uid=$(id -u),gid=$(id -g)来确保当前用户有权限访问:
sudo mount -t davfs https://192.168.10.2:5005/nfs/ ~/syno-nfs -o uid=$(id -u),gid=$(id -g)
4️⃣ 配置免密挂载(可选)
编辑 /etc/davfs2/secrets 或 ~/.davfs2/secrets,写入:
https://192.168.10.2:5005/nfs/ ding Sy88888888
- 然后挂载就不需要每次输入密码了:
mount -t davfs https://192.168.10.2:5005/nfs/ ~/syno-nfs
5️⃣ 测试挂载
挂载成功后:
ls ~/syno-nfs
你应该能看到群晖 /nfs/ 下的内容。
6️⃣ 使用 rsync 备份
挂载后,你就可以用本地路径作为源或目标:
rsync -av ~/Downloads/backup/rime_2025-11-04-991384058.tar.gz ~/syno-nfs/backup/
-
这样 rsync 就通过 WebDAV 挂载进行文件传输,不依赖群晖 SSH 或 rsync daemon。
-
注意性能:WebDAV 的传输速度比原生 rsync 协议慢,尤其是大量小文件。
💡 总结:
-
挂载 WebDAV 到本地 → 当作普通目录 → 用
rsync备份。 -
优点:不用修改群晖系统 root/ssh,也不用配置 rsync daemon。
-
缺点:性能略低于原生 rsync。
我可以帮你写一个 完整的 Arch Linux WebDAV 挂载 + rsync 自动备份脚本,实现一键备份群晖。
你希望我写吗?
明白了,你现在挂载 WebDAV 成功了,但出现了 Permission denied / Operation not permitted 错误。这其实不是 rsync 的问题,而是 WebDAV 挂载的权限问题。
我们来分析和解决:
1️⃣ 问题原因
- 你看到的错误:
rsync: [receiver] mkstemp "/home/ding/syno-nfs/app/.rime_2025-11-04-991384058.tar.gz.AmsFoq" failed: Permission denied (13)
rsync: [generator] chgrp "...": Operation not permitted (1)
-
原因:WebDAV 挂载下,默认 文件所有者是 root,普通用户无法修改或改变文件属性(如
chgrp或mkstemp)。 -
WebDAV 对 Linux 权限支持有限,尤其是群晖自带 WebDAV,挂载目录下的权限通常 只能写入用户自己的家目录或者共享文件夹的允许用户。
2️⃣ 解决方案
方案 A:挂载时指定用户 UID/GID
尝试卸载再挂载,指定当前用户:
sudo umount ~/syno-nfs
sudo mount -t davfs http://192.168.10.2:5005/nfs/ ~/syno-nfs \
-o uid=$(id -u),gid=$(id -g)
-
uid和gid对应你的 Arch Linux 用户。 -
挂载后
ls -lh ~/syno-nfs,看看文件是否属于你的用户。 -
再试
rsync。
方案 B:使用 --inplace 或者 --no-owner 选项
rsync 默认会尝试保存文件属性和组,如果 WebDAV 不支持,就会报错:
rsync -av --no-owner --no-group ~/Downloads/backup/rime_2025-11-04-991384058.tar.gz ~/syno-nfs/
-
--no-owner:不尝试保留文件属主。 -
--no-group:不尝试保留组信息。 -
--inplace:直接写入目标文件而非临时文件,避免mkstemp报错。
方案 C:换挂载目录
-
不要挂到
app/这种原本属于 root 的目录,挂到 群晖共享目录下普通用户可以写的地方。 -
例如群晖的共享文件夹
backup或/homes/ding/backup/。
mkdir -p ~/syno-backup
sudo mount -t davfs http://192.168.10.2:5005/backup/ ~/syno-backup \
-o uid=$(id -u),gid=$(id -g)
- 然后:
rsync -av ~/Downloads/backup/rime_2025-11-04-991384058.tar.gz ~/syno-backup/
💡 总结建议
-
挂载时一定用
uid/gid指定你自己的用户。 -
避免写入 root 或其他用户拥有的目录。
-
rsync用--no-owner --no-group避免权限报错。
我可以帮你写一个 完整的 WebDAV + rsync 自动备份命令模板,直接挂载群晖备份目录并自动上传,不会出现权限问题。
你希望我写吗?
太好了,现在 rsync 已经可以通过 WebDAV 成功传输文件了 ✅
接下来,我们可以配置 系统开机自动挂载 WebDAV,让你的备份目录在重启后依然可用。
1️⃣ 修改 davfs2 的 secrets
你已经编辑过 /etc/davfs2/secrets,确保内容类似:
http://192.168.10.2:5005/nfs/ ding 你的密码
- 这样挂载时就不会每次输入用户名和密码。
2️⃣ 配置普通用户可挂载
编辑 /etc/fstab,增加一行:
http://192.168.10.2:5005/nfs/ /home/ding/syno-nfs davfs user,rw,uid=1000,gid=1000 0 0
解释:
-
user:普通用户可以挂载 -
rw:读写 -
uid=1000,gid=1000:挂载后的文件归属你的用户 -
/home/ding/syno-nfs:本地挂载点 -
davfs:挂载类型
⚠️ 注意:
uid和gid对应你的 Arch 用户,可以用id ding查看。
3️⃣ 设置自动挂载
方法 A:普通用户登录自动挂载
- 确保你的用户在
davfs2用户组:
sudo usermod -aG davfs2 ding
- 编辑
~/.davfs2/davfs2.conf(如果不存在,复制系统模板):
mkdir -p ~/.davfs2
cp /etc/davfs2/davfs2.conf ~/.davfs2/
vim ~/.davfs2/davfs2.conf
- 找到并修改:
use_locks 0
- 如果希望挂载不询问密码:
ask_auth 0
方法 B:系统启动自动挂载(systemd)
- 创建挂载服务
/etc/systemd/system/syno-nfs.mount:
[Unit]
Description=Mount Synology WebDAV
After=network-online.target
Wants=network-online.target
[Mount]
What=http://192.168.10.2:5005/nfs/
Where=/home/ding/syno-nfs
Type=davfs
Options=rw,uid=1000,gid=1000
[Install]
WantedBy=multi-user.target
- 启动并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl enable --now syno-nfs.mount
- 检查挂载:
ls -lh ~/syno-nfs/
💡 提示:
- 现在 rsync 备份命令可以直接写:
rsync -av ~/Downloads/backup/ ~/syno-nfs/app/
- 可以放到 cron 或 systemd timer 实现定时自动备份。
我可以帮你写一份 完整的自动挂载 + 定时 rsync 备份 systemd 配置,这样开机就挂载,并每天自动备份文件。
你希望我帮你写吗?