离上一篇已经 3 个月了,简单说就是买了台 NAT 的 VPS,然后在如何利用这个问题上考虑了下对接网盘 WebDav 这个方向,虽然折腾是折腾,实际折腾完也没有然后了……
VPS 服务商的推广链接:[ShortSth:iHostART][/ShortSth]
网盘链接:https://infini-cloud.net/ 推荐码:
L2M3H
查看同系列的其他文章 ——
WebDav_沉冰浮水:https://www.wdssmq.com/tag/WebDav/
Rclone:
# rclone
VERSION=v1.63.1
mkdir -p ~/tmp/rclone && cd ~/tmp/rclone
wget https://downloads.rclone.org/${VERSION}/rclone-${VERSION}-linux-amd64.zip
unzip rclone-${VERSION}-linux-amd64.zip
cd rclone-${VERSION}-linux-amd64
# 复制到 /usr/local/bin/
cp rclone /usr/local/bin/
# 添加执行权限
chmod +x /usr/local/bin/rclone
wget https://downloads.rclone.org/v1.63.1/rclone-v1.62.2-linux-amd64.zip
unzip rclone-v1.62.2-linux-amd64.zip
cd rclone-v1.62.2-linux-amd64
# 复制到 /usr/local/bin/
cp rclone /usr/local/bin/
# 添加执行权限
chmod +x /usr/local/bin/rclone
# 执行命令后,根据提示进行配置
rclone config
# 2023/05/24 12:29:07 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
# No remotes found, make a new one?
# n) New remote
# s) Set configuration password
# q) Quit config
# n/s/q> n
# ↑ 新建一个 remote
# -----------------
# Enter name for new remote.
# name> Terdav
# ↑ 输入 remote 名称
# -----------------
# Option Storage.
# Type of storage to configure.
# Choose a number from below, or type in your own value.
# Storage> 46
# ↑ 这一步会给出 OneDrive,Dropbox 等网盘的选项,这里选择 46,即 WebDav
# -----------------
# Option url.
# URL of http host to connect to.
# E.g. https://example.com.
# Enter a value.
# url> https://lsv.teracloud.jp/dav/
# ↑ 输入 WebDav 的地址,这里是 InfiniCLOUD 的地址
# -----------------
# Option vendor.
# Name of the WebDAV site/service/software you are using.
# Choose a number from below, or type in your own value.
# Press Enter to leave empty.
# vendor> 5
# ↑ 这一步会给出一些 WebDav 的选项,这里选择 5,即 Other site/service or software
# Option user.
# User name.
# In case NTLM authentication is used, the username should be in the format 'Domain\User'.
# Enter a value. Press Enter to leave empty.
# user> username
# ↑ 输入用户名
# -----------------
# Option pass.
# Password.
# Choose an alternative below. Press Enter for the default (n).
# y) Yes, type in my own password
# g) Generate random password
# n) No, leave this optional password blank (default)
# y/g/n> y
# ↑ 是否需要密码,这里选择 y
# -----------------
# Enter the password:
# password: passwordpassword
# ↑ 输入密码
# -----------------
# Option bearer_token.
# Bearer token instead of user/pass (e.g. a Macaroon).
# Enter a value. Press Enter to leave empty.
# bearer_token>
# ↑ 这里直接回车,鉴权方式不是 Bearer Token
# -----------------
# Edit advanced config?
# y) Yes
# n) No (default)
# y/n> n
# ↑ 是否编辑高级配置,这里选择 n
# -----------------
# Configuration complete.
# Options:
# - type: webdav
# - url: https://lsv.teracloud.jp/dav/
# - vendor: other
# - user: wdmbts
# - pass: *** ENCRYPTED ***
# Keep this "Terdav" remote?
# y) Yes this is OK (default)
# e) Edit this remote
# d) Delete this remote
# y/e/d> y
# ↑ 会输出配置信息供确认
# -----------------
注:Terdav
是上一步配置的 remote 名称
# 列出远程的顶级目录
rclone lsd Terdav:
# 列出全部文件
rclone ls Terdav:
mkdir ~/tmp/rclone-test
# 写入 Hello World 及格式化的时间到文件 2023-08-28T16:39:51+08:00
echo "Hello World $(date --rfc-3339=seconds)" > ~/tmp/rclone-test/for-test.txt
# 上传本地文件夹到远程,表示路径的参数交换则是下载
rclone copy -P ~/tmp/rclone-test Terdav:rclone-test
# 注:-P / --progress 标志会显示传输进度
# -------------------------------------
# ----------------
# 重要: rclone sync 是单向同步,会删除「只存在于目标端」的文件;
# 重要: rclone sync 是单向同步,会删除「只存在于目标端」的文件;
# ----------------
mkdir ~/tmp/rclone-sync
# 同步本地文件夹到远程,--interactive 表示交互式同步,对每个要处理的文件进行提示
echo "Hello World $(date --rfc-3339=seconds)" > ~/tmp/rclone-sync/for-sync.txt
rclone sync --interactive -P ~/tmp/rclone-sync Terdav:rclone-sync
# 同步本地文件夹到远程,--dry-run 表示模拟运行
echo "Hello World $(date --rfc-3339=seconds)" > ~/tmp/rclone-sync/for-sync.txt
rclone sync --dry-run -P ~/tmp/rclone-sync Terdav:rclone-sync
# 注:可以使用 --exclude _gsdata_/** 排除 GoodSync 生成的 _gsdata_ 文件夹
# -------------------------------------
# 双向同步功能目前仍为「实验性」
mkdir ~/tmp/rclone-sync
# 结论:在 WebDav 场景下确实没法用的样子?会提示 modification time support is missing
echo "Hello World $(date --rfc-3339=seconds)" > ~/tmp/rclone-sync/for-sync.txt
rclone bisync -P --resync ~/tmp/rclone-sync Terdav:rclone-sync --exclude _gsdata_/**
# 两个本地文件夹测试
mkdir ~/tmp/rclone-sync-2
# -1, --resync 用于初始化同步,两边的文件都会被同步到对方
rclone bisync -P --resync ~/tmp/rclone-sync ~/tmp/rclone-sync-2 --exclude _gsdata_/**
# 仅同步距离上次同步后修改的文件
echo "Hello World $(date --rfc-3339=seconds)" > ~/tmp/rclone-sync/for-sync.txt
rclone bisync -P ~/tmp/rclone-sync ~/tmp/rclone-sync-2 --exclude _gsdata_/**
# 注:--remove-empty-dirs 参数用于清理空文件夹
好像可以将远程 WebDav 挂载到本地;
一、首先过程中遇到一些报错及解决方法:
# 安装 fuse ,系统为 Debian
apt install fuse
# Fatal error: failed to mount FUSE fs: fusermount: exec: "fusermount3": executable file not found in $PATH
# 好像用的机子环境比较特殊,
mknod -m 666 /dev/fuse c 10 229
# update-rc.d -f udev disable
# mount helper error: fusermount3: fuse device not found, try 'modprobe fuse' first
二、挂载
# 创建一个挂载点,保持为空文件夹
mkdir -p ~/tmp/rclone-mount
# 挂载,--daemon 表示后台运行(守护进程),仅在 Linux 下有效
rclone mount Terdav:rclone-mount ~/tmp/rclone-mount --daemon
# 直接写入文件
echo "Hello World $(date --rfc-3339=seconds)" > ~/tmp/rclone-mount/for-mount.txt
三、重启后自动挂载
占位
最理想的使用还是双向同步,然而并不能用;
GoodSync 到是可以用,然而是收费的,虽然之前不知道为什么领到了一年的免费授权……
所以下一篇将会介绍一下 GoodSync 在 Linux 下的使用。