IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    WebDav 折腾「其二」之 rclone

    沉冰浮水发表于 2023-08-28 16:39:51
    love 0

    前言

    离上一篇已经 3 个月了,简单说就是买了台 NAT 的 VPS,然后在如何利用这个问题上考虑了下对接网盘 WebDav 这个方向,虽然折腾是折腾,实际折腾完也没有然后了……

    VPS 服务商的推广链接:[ShortSth:iHostART][/ShortSth]

    网盘链接:https://infini-cloud.net/ 推荐码:L2M3H

    查看同系列的其他文章 ——

    WebDav_沉冰浮水:https://www.wdssmq.com/tag/WebDav/

    rclone

    Rclone:

    https://rclone.org/

    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 配置

    # 执行命令后,根据提示进行配置
    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
    
    # ↑ 会输出配置信息供确认
    # -----------------
    
    

    rclone 使用

    注: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 参数用于清理空文件夹
    
    
    

    rclone 挂载

    好像可以将远程 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 下的使用。



沪ICP备19023445号-2号
友情链接