Files
chill_notes/AI工程/WebDAV挂载指南.md
2026-04-21 19:53:31 +08:00

4.5 KiB
Executable File
Raw Blame History

WebDAV 挂载到 Linux 本地目录

将远程 WebDAV 服务器(如 Obsidian/Synology NAS挂载为本地文件夹像操作本地文件一样管理。


方法一davfs2推荐最稳定

1. 安装 davfs2

# Debian/Ubuntu
sudo apt-get install davfs2

# CentOS/RHEL
sudo yum install davfs2

# macOS
brew install davfs2

2. 挂载 WebDAV

# 创建挂载点
sudo mkdir -p /mnt/webdav

# 挂载(需要输入用户名密码)
sudo mount -t davfs http://your-server:port/path /mnt/webdav

# 或者指定用户名
sudo mount -t davfs -o username=admin http://your-server:port/path /mnt/webdav

3. 开机自动挂载

# 添加到 /etc/fstab
echo "http://your-server:port/path /mnt/webdav davfs defaults,username=admin,password=yourpass 0 0" | sudo tee -a /etc/fstab

# 或者保存密码到文件(更安全)
echo "yourpass" | sudo tee /etc/davfs2/secrets
chmod 600 /etc/davfs2/secrets
echo "/mnt/webdav username password" | sudo tee -a /etc/davfs2/secrets

方法二rclone支持云存储适合 Docker 环境)

1. 安装 rclone

# 下载最新版本
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
sudo mv rclone-*-linux-amd64/rclone /usr/local/bin/
sudo chown root:root /usr/local/bin/rclone
sudo chmod 755 /usr/local/bin/rclone
rm -rf rclone-*-linux-amd64 rclone-current-linux-amd64.zip

2. 配置 rclone

# 交互式配置
rclone config

# 选择 n 新建配置
# 输入名称obsidian-webdav
# 类型选择webdav
# URLhttps://your-server:port/path
# vendorother
# 输入用户名密码

3. 挂载为本地目录

# 创建挂载点
mkdir -p ~/obsidian-webdav

# 前台测试(确认能连接)
rclone mount obsidian-webdav: ~/obsidian-webdav --vv

# 后台运行
rclone mount obsidian-webdav: ~/obsidian-webdav \
  --daemon \
  --vfs-cache-mode writes \
  --allow-other

# 开机自启systemd
cat > ~/.config/systemd/user/rclone-obsidian.service << 'EOF'
[Unit]
Description=rclone mount for Obsidian
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/rclone mount obsidian-webdav: %h/obsidian-webdav --vfs-cache-mode writes
ExecStop=/bin/fusermount -uz %h/obsidian-webdav
Restart=on-failure

[Install]
WantedBy=default.target
EOF

systemctl --user enable rclone-obsidian.service
systemctl --user start rclone-obsidian.service

方法三fUSE + davfs2用户空间挂载无需 root

1. 安装 fuse 和 davfs2

sudo apt-get install fuse davfs2

2. 配置非 root 用户使用 FUSE

sudo usermod -a -G fuse $USER
# 重新登录生效

3. 挂载

mkdir -p ~/webdav
fusedav https://your-server:port/path -u username -p password ~/webdav

方法四curlftpsFTP over HTTPS需要 FUSE

# 安装
sudo apt-get install curlftpfs

# 挂载
sudo curlftpfs -o allow_other,user=username:password https://your-server/path /mnt/webdav

方法五:直接在代码中使用 WebDAV

Python 示例

import webdav3.client as wc

options = {
    'webdav_hostname': "https://your-server:port/path",
    'webdav_login':    "username",
    'webdav_password': "password"
}

client = wc.Client(options)

# 列出文件
print(client.list())

# 下载文件
client.download_sync(remote_path="file.md", local_path="file.md")

# 上传文件
client.upload_sync(local_path="new.md", remote_path="new.md")

安装 webdav3

pip install webdav3

你的服务器信息

服务器: http://8.134.220.229:13803
用户名: admin
密码: blackhill
路径: /实践积累

快速测试命令

# 测试连接curl
curl -s --digest --user admin:blackhill \
  "http://8.134.220.229:13803/实践积累/" | head -20

# 列出文件
curl -s --digest --user admin:blackhill \
  -X PROPFIND "http://8.134.220.229:13803/实践积累/" -H "Depth: 1" | \
  grep -oE '<d:href>[^<]+</d:href>' | head -10

常见问题

Q: 挂载后文件看不到?

  • 检查网络连接
  • 确认用户名密码正确
  • 查看日志:dmesg | tail

Q: 写入慢或失败?

  • davfs2 有缓存,可能有延迟
  • 尝试增加缓存大小
  • 检查服务器端是否有写入权限限制

Q: Docker 容器内无法挂载?

  • Docker 需要 --privileged 模式
  • 或者使用 rclone 的 --allow-non-empty

Q: 开机自启失败?

  • 检查 systemd 服务配置
  • 确保网络在挂载前已就绪(添加 After=network.target