Linux 安装 Rclone 并使用 systemd 自动挂载
什么是 Rclone
Rclone是一个命令行程序,用于管理云存储的文件。它是一个功能丰富的云供应商网络存储界面的替代品。超过40种云存储产品支持Rclone,包括S3对象存储、商业和消费者文件存储服务,以及标准传输协议。
服务器硬盘空间往往较小,而云盘空间比较大。这时可以使用 Rclone 将云盘空间挂载到服务器上,充分利用起来。
安装 Rclone
发行版 Linux 系统使用对应的包管理器即可完成安装。例如我使用 CentOS 的 yum 包管理器安装命令为
yum install rclone
yum install fuse
安装 fuse 是为了等下挂载网盘。
添加盘
rclone config
rclone 添加盘的操作并不难,这里就不再详细写出了。
手动挂载
Rclone 的挂载基本命令为 rclone mount "网盘名称:路径" "本地路径"
rclone mount netdisk1:pathA/pathB /home/netdisk1 \
--buffer-size 32M --transfers 4 \
--vfs-cache-mode full --cache-dir /home/rclone/cache \
--dir-cache-time 2160h --vfs-cache-max-age 2160h \
--vfs-cache-max-size 8192M --vfs-cache-poll-interval 30m \
--umask 000 --no-modtime \
--allow-non-empty --allow-other --allow-root
为什么我的挂载命令这么长? 因为我的挂载命令启用了缓存,这些设置可以根据需要进行修改。
一些参数解释
--allow-non-empty
允许挂载到非空目录--allow-other
允许其他用户访问 (应该是指非运行 rclone 进程的用户)--allow-root
允许 root 用户访问--no-modtime
不读写修改时间 (加快速度)
取消挂载
# 强制取消挂载
/usr/bin/fusermount -u /home/hath/cache
# 安全取消挂载 (会等待现有任务完成)
/usr/bin/fusermount -qzu /home/hath/cache
自动挂载
跟着 rclone 官方文档里的自动挂载研究了半天没整出来,然后就有了现在这个方案...
我使用 systemd 实现自动挂载,因此要创建一个服务。
此处以服务名 rclone-mount.service
为例
编辑 /etc/systemd/system/rclone-mount.service
文件
[Unit]
Description=rclone mount
AssertPathIsDirectory=挂载的本地路径
Wants=network-online.target
After=network-online.target
[Service]
Type=notify
User=root
ExecStart=/usr/bin/rclone mount ...这里替换成你的挂载命令/参数
Restart=on-failure
ExecStop=/usr/bin/fusermount -qzu "挂载的本地路径"
[Install]
WantedBy=multi-user.target
然后就可以使用 systemctl 管理服务了
挂载 systemctl start hentai-cache.service
取消挂载 systemctl stop hentai-cache.service
查看状态 systemctl status hentai-cache.service
自动挂载 systemctl enable hentai-cache.service