windows使用rclone挂载alist为本地磁盘,设置开机自启

关键词:rclone、windows rclone

实现在windows下将alist挂载为本地磁盘,并设置开机自启,使得重启后依然生效。

概述

Rclone 是一个命令行程序,用于管理云存储上的文件。它是云供应商的网络存储接口的一个功能丰富的替代品。超过 40 种云存储产品支持 rclone,包括 S3 对象存储、企业和消费者文件存储服务以及标准传输协议。

用户称 Rclone 为“云存储的瑞士军刀”“无异于魔法的科技”

Rclone 具有强大的云等同于 unix 命令 rsync、cp、mv、mount、ls、ncdu、tree、rm 和 cat。Rclone 熟悉的语法包括 shell 管道支持和--dry-run保护。它在命令行、脚本或通过其API 使用。

Rclone多种文件传输协议,支持SFTP,HTTP,WebDAV,FTP和DLNA。Rclone是一个成熟的开源软件,最初受rsync的启发并采用Golang编写。其文档和社区也都非常好,提供广泛和友好的使用用例。

官网:https://rclone.org/

功能

Rclone支持但不仅限于下面列出功能:

  • 将文件备份(和加密)到云存储
  • 从云存储恢复(和解密)文件
  • 将云数据镜像到其他云服务或本地
  • 将数据迁移到云端,或在云存储供应商之间迁移
  • 将多个、加密、缓存或多样化的云存储挂载为磁盘
  • 使用lsf、ljson、size、ncdu分析和说明云存储上保存的数据
  • 联合文件系统一起呈现多个本地和/或云文件系统作为一个

特性

  • 接送服务
    • 始终检查 MD5、SHA1 哈希值以确保文件完整性
    • 时间戳保留在文件中
    • 可以随时重新启动操作
    • 可以进出网络,例如两个不同的云提供商
    • 可以使用多线程下载到本地磁盘
  • 将新文件或更改的文件复制到云存储
  • 同步(一种方式)使目录相同
  • 验证后将文件移动到云存储删除本地
  • 检查哈希和丢失/额外的文件
  • 将您的云存储挂载为网络磁盘
  • 通过HTTP / WebDav / FTP / SFTP / DLNA服务本地或远程文件
  • 实验性基于 Web 的 GUI

下载软件

Rclone:

Rclone downloads

WinFsp:

https://winfsp.dev/rel/

配置Rclone

假设Rclone所在目录是:D:\rclone-v1.64.0-windows-amd64,进入文件目录,在地址栏输入cmd

image-20231225202109234

输入

rclone config

输入n

image-20231225202210853

输入名字

image-20231225202316095

输入49

image-20231225202405466

输入alist的链接,并加dav后缀

image-20231225202423742

输入6,再输入用户名,再输入y,后面填两次密码后一路回车即可

image-20231225202523788

按q

image-20231225202521387

运行下面指令即可实现挂载:

rclone.exe mount alist:/ G: --cache-dir D:alist --vfs-cache-mode writes --header "Referer:https://www.aliyundrive.com/"

设置开机自启

新建一个rclone.bat在D:/rclone-v1.64.0-windows-amd64的文件夹内,内容同样是:

rclone.exe mount alist:/ G: --cache-dir D:alist --vfs-cache-mode writes --header "Referer:https://www.aliyundrive.com/"

按win+r,输入shell:startup,在新打开的文件夹里面新建一个rclone.vbs文件

输入

CreateObject("WScript.Shell").Run "cmd /c D:/rclone-v1.64.0-windows-amd64/rclone.bat",0 

即可完成开机自动开启服务进行挂载。

常见指令

查看新建的网盘

rclone config show

挂载命令

rclone mount DriveName:Folder LocalFolder

如:rclone.exe mount 云盘:/ E: --cache-dir D:alist --vfs-cache-mode writes --header "Referer:https://www.aliyundrive.com/"
# rclone mount 网盘名称:网盘里面的文件夹 本地绝对路径

卸载命令

fusermount -qzu LocalFolder
fusermount -qzu /home/orangbus/Code/laradock/emby/data

参数说明:

网盘名称:新建网盘的时候你输入的网盘名称

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n
name> onedrive  //这里的名字

网盘里面的文件夹: 假如你的网盘目录下有一个video 的文件夹,你想把这个文件夹挂载到本地(其他文件夹挂载类似)

rclone mount onedrive:video 本地绝对路径    

本地绝对路径: 在本地新建一个文件夹,用来挂载网盘,最好是绝对路径

/home/orangbus/Onedrive

复制本地文件到网盘中

如果想把某个文件或者文件夹备份到我的网盘中

rclone copy /home/orangbus/localFile.zip onedrive:document

开机自启

先新建systemd配置文件,适用CentOS 7Debian 8+Ubuntu 16+

再使用命令:

#将后面修改成你上面手动运行命令中,除了rclone的全部参数
command="mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000"
#以下是一整条命令,一起复制到SSH客户端运行
cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
After=network-online.target

[Service]
Type=simple
ExecStart=$(command -v rclone) ${command}
Restart=on-abort
User=root

[Install]
WantedBy=default.target
EOF

开始启动:

systemctl start rclone

设置开机自启:

systemctl enable rclone

其他命令:

重启:systemctl restart rclone
停止:systemctl stop rclone
状态:systemctl status rclone

如果你想挂载多个网盘,那么将systemd配置文件的rclone.service改成rclone1.service即可,重启动什么的同样换成rclone1

查看帮助:

rclone --help
# 查看功能选项

rclone help flags
# 查看所有参数选项

rclone help backends
# 查看支持的所有网盘

Rclone 设置

rclone config - 进入交互式配置选项,进行添加、删除、管理网盘等操作。
rclone config file - 显示配置文件的路径,一般配置文件在 ~/.config/rclone/rclone.conf
rclone config show - 显示配置文件信

命令语法

# 本地到网盘
rclone [功能选项] <本地路径> <网盘名称:路径> [参数] [参数] ...
# 网盘到本地
rclone [功能选项] <网盘名称:路径> <本地路径> [参数] [参数] ...
# 网盘到网盘
rclone [功能选项] <网盘名称:路径> <网盘名称:路径> [参数] [参数] .

常用功能选项

rclone config   // 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。    
rclone copy   // 将文件从源复制到目的地址,跳过已复制完成的。    
rclone mount   //载    
rclone sync   // 将源数据同步到目的地址,只更新目的地址的数据。    
rclone move   // 将源数据移动到目的地址。    
rclone delete   // 删除指定路径下的文件内容。    
rclone purge   // 清空指定路径下所有文件数据。    
rclone mkdir   // 创建一个新目录。    
rclone rmdir   // 删除空目录。    
rclone check   // 检查源和目的地址数据是否匹配。    
rclone ls   // 列出指定路径下所有的文件以及文件大小和路径。    
rclone lsd   // 列出指定路径下所有的目录/容器/桶。    
rclone lsl   // 列出指定路径下所有文件以及修改时间、文件大小和路径。    
rclone md5sum   // 为指定路径下的所有文件产生一个md5sum文件。    
rclone sha1sum   // 为指定路径下的所有文件产生一个sha1sum文件。    
rclone size   // 获取指定路径下,文件内容的总大小。    
rclone version   // 查看当前版本。    
rclone cleanup   // 清空remote。    
rclone dedupe   // 交互式查找重复文件,进行删除/重命名操作

rclone copy - 复制
rclone move - 移动,如果要在移动后删除空源目录,请加上 --delete-empty-src-dirs 参数
rclone sync - 同步:将源目录同步到目标目录,只更改目标目录。
rclone size - 查看网盘文件占用大小。
rclone delete - 删除路径下的文件内容。
rclone purge - 删除路径及其所有文件内容。
rclone mkdir - 创建目录。
rclone rmdir - 删除目录。
rclone rmdirs - 删除指定灵境下的空目录。如果加上 --leave-root 参数,则不会删除根目录。
rclone check - 检查源和目的地址数据是否匹配。
rclone ls - 列出指定路径下的所有的文件以及文件大小和路径。
rclone lsl - 比上面多一个显示上传时间。
rclone lsd 列出指定路径下的目录
rclone lsf - 列出指定路径下的目录和文件

常用参数

-n = --dry-run - 测试运行,用来查看 rclone 在实际运行中会进行哪些操作。
-P = --progress - 显示实时传输进度,500mS 刷新一次,否则默认 1 分钟刷新一次。
--cache-chunk-size SizeSuffi - 块的大小,默认5M,理论上是越大上传速度越快,同时占用内存也越多。如果设置得太大,可能会导致进程中断。
--cache-chunk-total-size SizeSuffix - 块可以在本地磁盘上占用的总大小,默认10G。
--transfers=N - 并行文件数,默认为4。在比较小的内存的VPS上建议调小这个参数,比如128M的小鸡上使用建议设置为1。
--config string - 指定配置文件路径,string为配置文件路径。
--ignore-errors - 跳过错误。比如 OneDrive 在传了某些特殊文件后会提示Failed to copy: failed to open source object: malwareDetected: Malware detected,这会导致后续的传输任务被终止掉,此时就可以加上这个参数跳过错误。但需要注意 RCLONE 的退出状态码不会为0。

文件过滤

-exclude - 排除文件或目录。
--include - 包含文件或目录。
--filter - 文件过滤规则,相当于上面两个选项的其它使用方式。包含规则以 + 开头,排除规则以 - 开头。

文件类型过滤
比如 --exclude "*.bak"、--filter "- *.bak",排除所有 bak 文件。也可以写作。
比如 --include "*.{png,jpg}"、--filter "+ *.{png,jpg}",包含所有 png 和 jpg 文件,排除其他文件。
--delete-excluded 删除排除的文件。需配合过滤参数使用,否则无效。

目录过滤
目录过滤需要在目录名称后面加上 /,否则会被当做文件进行匹配。以 / 开头只会匹配根目录(指定目录下),否则匹配所目录。这同样适用于文件。
--exclude ".git/" 排除所有目录下的.git 目录。
--exclude "/.git/" 只排除根目录下的.git 目录。
--exclude "{Video,Software}/" 排除所有目录下的 Video 和 Software 目录。
--exclude "/{Video,Software}/" 只排除根目录下的 Video 和 Software 目录。
--include "/{Video,Software}/**" 仅包含根目录下的 Video 和 Software 目录的所有内容。

文件大小过滤
默认大小单位为 kBytes ,但可以使用 k ,M 或 G 后缀。
--min-size 过滤小于指定大小的文件。比如 --min-size 50 表示不会传输小于 50k 的文件。
--max-size 过滤大于指定大小的文件。比如 --max-size 1G 表示不会传输大于 1G 的文件。

过滤规则来自某个文件
--exclude-from <规则文件> :从文件添加包含规则
--include-from <规则文件>:从文件添加删除规则
--filter-from <规则文件> :从文件添加包含 / 排除规则。比如 --filter-from filter-file.txt。
 filter-file.txt 示例:
 - secret*.jpg
+ *.jpg
+ *.png
+ file2.avi
- /dir/Trash/**
+ /dir/**
- *

环境变量

rclone 中的每个选项都可以通过环境变量设置。环境变量的名称可以通过长选项名称进行转换,删除 -- 前缀,更改 -_,大写并添加前缀 RCLONE_环境变量的优先级会低于命令行选项,即通过命令行追加相应的选项时会覆盖环境变量设定的值

比如设置最小上传大小 --min-size 50,使用环境变量是 RCLONE_MIN_SIZE=50。当环境变量设置后,在命令行中使用 --min-size 100,那么此时环境变量的值就会命令行覆盖,最终生效的是 --min-size 100

命令 说明
RCLONE_CONFIG 自定义配置文件路径
RCLONE_CONFIG_PASS 若 rclone 进行了加密设置,把此环境变量设置为密码,可自动解密配置文件
RCLONE_RETRIES 上传失败重试次数,默认 3 次
RCLONE_RETRIES_SLEEP 上传失败重试等待时间,默认禁用,单位s、m、h分别代表秒、分钟、小时
CLONE_TRANSFERS 并行上传文件数
RCLONE_CACHE_CHUNK_SIZE 块的大小
RCLONE_CACHE_CHUNK_TOTAL_SIZE 块可以在本地磁盘上占用的总大小
RCLONE_IGNORE_ERRORS=true 跳过错误

日志

rclone 有 4 个级别的日志记录,ERRORNOTICEINFODEBUG。默认情况下,rclone 将生成 ERRORNOTICE 级别消息。

  • -q - rclone将仅生成 ERROR 消息。
  • -v - rclone将生成 ERRORNOTICEINFO 消息,推荐此项
  • -vv - rclone 将生成 ERRORNOTICEINFODEBUG 消息。
  • --log-level LEVEL - 标志控制日志级别。

总结

使用 Rclone 可以轻松实现备份同步文件到各大网盘,简化了备份方案,也可以用来迁移2个不同的网盘程序文件,甚至可以直接挂载网盘到本地用来扩充磁盘食用,更多的食用请详细参考官方文档。