Rclone

概述

参考:

Rclone 是一个命令行工具,用来管理云存储上的文件。Rclone 也可以看作 rsync for cloud storage(用于云存储的 rsync)。Rclone 支持各种存储类型,包括 商业文件存储服务、标准传输协议(比如 WebDAV、S3 等)、等等。从这里我们可以查看到所有受支持的存储提供者

Rclone 将存储提供者抽象为 Remote,在我们配置 Rclone 时,经常会看到 Remote 这个词,创建、删除 Remote 这种行为,就是在 INI 格式的配置文件中配置 Remote。这些 Remote 由指定类型的 Backend 提供支持。

比如,我们可以这样描述: 我创建了一个名为 alist 的 Remote,使用的是 WebDav 类型的 Backend。

Rclone 还可以将这些 Remote 作为磁盘挂载在 Windows、macOS、Linux 上,并通过 SFTP、HTTP、WebDAV、FTP、DLNA 对外提供存储能力。

Rclone 安装

rclone 的挂载使用 FUSE,需要安装 winfsp。

Rclone 关联文件与配置

rclone.conf # 各种 Remotes 信息。

  • 如果在某些已定义的位置都没有找到 rclone.conf 文件,则会在以下位置创建一个新的配置文件:
    • Windows 上
      • $APPDATA/rclone/rclone.conf
    • 类 Unix 上
      • 如果定义了 $XDG_CONFIG_HOME,则在 $XDG_CONFIG_HOME/rclone/rclone.conf
      • 如果未定义 $XDG_CONFIG_HOME,则在 ~/.config/rclone/rclone.conf

Syntax(语法)

参考:

全局标志

参考:

详见 Rclone 配置,命令行标志通常也是 Rclone 的配置,分为两种,与后端无关的和与后端相关的。绝大部分情况,在使用命令行时,我们一般使用与后端无关的的标志。在这个文章中,主要看 Backend 无关配置详解 部分即可

rclone config

进入交互式会话,用以修改配置文件(默认为 ~/.config/rclone/rclone.conf)。进入交互式配置会话中,我们可以设置新的 Remotes 并管理现有 Remotes。还可以设置或删除密码以保护我们的配置。

除了基础的交互式,我们还可以使用各种子命令来直接修改配置文件

Syntax(语法)

rclone config [FLAGS] [COMMAND]

COMMAND

  • file # 显示正在使用的配置文件的j路径
  • show # 打印 (解密) 配置文件,或单个 Remote 的配置。

rclone copy

将源 Remote 的文件复制到目标 Remote 中,跳过相同的文件。不会删除目标中的比源中多的文件。

Syntax(语法)

rclone copy SOURCE:SourcePath DEST:DestPath

rclone copyto

copyto 可以在上传单个文件到目标目录下时,改变文件的原名。其他情况与 copy 的功能相同。

Syntax(语法)

rclone mount

详见 Rclone mount

rclone sync

让目标 Remote 与源 Remote 保持相同,仅修改目标 Remote 中的数据。

https://rclone.org/commands/rclone_sync/

注意:sync 命令会导致目标数据丢失,最好使用 –dry-run 或 -i, –interactive 标志进行测试

Syntax(语法)

rclone sync SOURCE:PATH DEST:PATH [FLAGS]

EXAMPLE

将 SRC_REMOTE 中的 SRC_PATH 路径下的文件同步到 DST_REMOTE 中的 DST_PATH 路径下

export SRC_REMOTE="ali-oss"
export DST_REMOTE="hwc-obs"
export SRC_PATH="/notes-learning"
export DST_PATH="/notes-learning"
rclone sync ${SRC_REMOTE}:${SRC_PATH} ${DST_REMOTE}:${DST_PATH}  -v

列出 Remote 中的数据相关命令

ls # 列出路径中的对象及其大小和路径

lsl # 列出路径中的对象以及修改时间、大小和路径

lsd # 列出路径中的所有目录/容器/存储桶

lsf

lsjson

应用示例

两个对象存储同步数据

rclone sync 命令会在源和目标之间同步文件。 它会删除目标目录中源目录没有的文件,并且会更新目标目录中的文件。 rclone copy 命令只会在源和目标之间复制文件。 它不会删除目标目录中的文件,也不会更新文件。

同步两个云盘中的数据(待验证,alist 好像有点问题)

  • nohup rclone sync alist-local:/aliyun alist-local:/baiduyun -vv >> /root/rclone.log 2>&1 &

rclone sync

webdav 挂载为电脑本地硬盘(非网络硬盘)

原文链接:B 站-捕梦小达人

注意:需要安装 winfsp

使用 Alist 的 阿里云网盘时,注意添加 --header,参考 alist discussions 630

rclone mount --config rclone.conf alist:/ Z: --cache-dir D:\appdata\rclone --vfs-cache-mode full --header "Referer:"

可以参考 PowerShell 的 Management 模块下的 Start-Process 命令的,以便在后台运行,效果如下:

Start-Process "alist.exe" -ArgumentList "server --data D:\appdata\alist" -WindowStyle Hidden -RedirectStandardOutput "D:\Tools\Scripts\log\alist.log" -RedirectStandardError "D:\Tools\Scripts\log\alist-err.log"

Start-Process "rclone.exe" `
-ArgumentList "mount alist-net:/ Z: --cache-dir D:\appdata\rclone-cache --vfs-cache-mode full --vfs-cache-max-age 24h --header Referer:" `
-WindowStyle Hidden `
-RedirectStandardOutput "D:\Tools\Scripts\log\rclone.log" -RedirectStandardError "D:\Tools\Scripts\log\rclone-err.log"

然后可以参考 Windows 管理中的 启动项 以便开机时自动挂载。


最后修改 October 9, 2024: promql (571b1dc2)