Windows 挂载 OSS 存储

最近想要一个网盘,以防止电脑上重要数据丢失,但是百度阿里这种云盘使用起来需要下载他们的客户端,使用起来略微麻烦,最好是类似一块 Windows 硬盘挂载到我的电脑上,打开就能用的那种。终于在网上找到一种方案,将对象存储挂载至电脑上,并且对象存储价格低廉,遂记录该方案的实现步骤。

一、下载软件

Winfsp:https://winfsp.dev/rel/

Rclone:https://rclone.org/downloads/

SyncToy:https://www.majorgeeks.com/files/details/microsoft_synctoy_for_windows_xp.html

二、配置 Rclone

2.1 配置环境变量

1、打开任意文件夹,并在左侧导航目录下找到此电脑,单击右键选择属性 > 高级系统设置 > 环境变量 > 系统变量 > Path,单击新建

2、在弹出的窗口中,填写 Rclone 解压后的路径(D:\rclone),单击确定

image-20220801002313643

2.2 配置 OSS

1、打开 Windows Powershell,输入rclone --version 命令,按 Enter,查看 Rclone 是否成功安装。

image-20220801002400599

2、确认 Rclone 安装成功后,在 Windows Powershell 中,输入 rclone config 命令,按 Enter

3、输入 n ,按 Enter,新建一个 New remote。

4、输入该磁盘的名称,例如 myoss,按 Enter

image-20220801002704051

5、在显示的选项中,选择包含 Alibaba 的选项,即输入5,按 Enter

6、在显示的选项中,选择包含 OSS 的选项,输入2,按 Enter

7、执行到 env_auth> 时,按 Enter。

8、执行到 access_key_id>时,输入阿里云 OSS 的访问密钥 AccessKey ID,按 Enter

9、执行到 secret_access_key> 时,输入阿里云 OSS 的访问密钥 AccessKey Secret,按 Enter

10、选择对应的存储的地域,按 Enter

11、选择权限类型,根据实际需求选择 private 或者 public-read。输入3,按 Enter

12、在显示的对象存储的存储类型中,您可根据实际需求选择以何种存储类型将文件上传到 OSS。

  • Default 表示默认

  • Standard storage class 表示标准存储(STANDARD)

  • Infrequent access storage mode 表示低频存储(Standard_IA)

  • Archive storage mode 表示归档存储(ARCHIVE)

13、执行到 Edit advanced config? (y/n) 时,按 Enter

14、确认信息无误后,按 Enter

15、输入 q,完成配置。

2.3 修改配置文件

以上步骤配置完成后,在 C:\Users\用户名\.config\rclone 文件夹下,即可看到一个名称为 rclone.conf 的文件,该文件为 rclone 的配置文件。如果您想要修改 rclone 的配置,可直接对其进行修改。

2.4 挂载 OSS 为本地磁盘

如果映射为本地磁盘,则执行命令如下:

rclone mount myoss:/ O: --cache-dir D:\temp --vfs-cache-mode writes --no-check-certificate
  • myoss:替换为用户自定义的磁盘名称。
  • O:替换为您想要挂载后,硬盘的盘符名称即可,请不要与本地的 C、D、E 盘等重复。
  • D:\temp 为本地缓存目录,可自行设置。

当出现提示 “The service rclone has been started” 则说明挂载成功。

2.5 设置开机自启动挂载硬盘

由于如上操作在电脑重启后,映射的磁盘将会消失,需要再次手工操作。因此,我们可以设置自启动装置,让服务器每次重启后都自动挂载磁盘。

  1. 在 Rclone 安装目录 D:\rclone 下,分别新建 startup_rclone.vbs 和 startup_rclone.bat 文件。

  2. 在 startup_rclone.bat 中,写入如下挂载命令:

    rclone mount myoss:/ O: --cache-dir D:\temp --vfs-cache-mode writes --no-check-certificate &
  3. 在 startup_rclone.vbs 中,写入如下代码:

    Set Ws = CreateObject("Wscript.Shell")
    Ws.Run "cmd /c D:\rclone\startup_rclone.bat",0
  4. 将 startup_rclone.vbs 文件剪切到 %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 文件夹下。

  5. 重启服务器。

三、配置 SyncToy(可选)

该工具可以实现两个目录中文件同步,但是经测试,文件同步比较耗时,而且使用的对象存储资源较多,费钱。

3.1 新建同步盘

左边本地盘、右边 OSS 盘

image-20220801145215001

3.2 同步方式

选择 echo,左边操作同步到右边

image-20220801145248669

3.3 设定任务名

image-20220801145343654

3.4 手动同步

点击 run 手动同步两个盘

image-20220801145410013

3.5 自动同步

通过定时任务,自动执行同步任务

任务栏搜索 “任务计划程序”,点击”创建基本任务”

image-20220801145532471

设置名称

image-20220801145704883

触发器

image-20220801145718632

时间

image-20220801145740933

操作

image-20220801145749898

程序位置

image-20220801164020060

完成

image-20220801145840800

四、嫌阿里云收费?试试自建对象存储

由于云上的对象存储收费项比较“细致”,从基础的存储量到下载的公网流量费,甚至数据检索调取API次数也收费。这样我们可以通过MinIO自建一个对象存储,来替代云的。

4.1 安装 MinIO

服务端

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin/

客户端

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/

4.2 启动服务端

使用 systemd 管理MinIO服务

vim /usr/lib/systemd/system/minio.service

内容如下

[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local

User=root
Group=root
ProtectProc=invisible

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

创建配置文件

vim /etc/default/minio

内容如下:

  • MINIO_ROOT_USERMINIO_ROOT_PASSWORD为登录 Console 页面的账号密码,可以自己修改

  • MINIO_VOLUMES为数据存放的目录,挑一个容量大一点的。

  • MINIO_OPTS为启动配置,此处配置了Console页面的访问端口为 9001

# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment

MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me

# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.

MINIO_VOLUMES="/data"

# MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
# For example, `--console-address :9001` sets the MinIO Console listen port
MINIO_OPTS="--console-address :9001"

启动服务

systemctl start minio.service && systemctl enable minio.service && systemctl status minio.service

登录服务器IP:9001访问页面。账号密码为配置文件中自己设置的。

4.3 创建 Bucket 与 AK\SK

这一步比较简单,与阿里云操作类似。

Bucket 创建:BucketsCreate Bucket输入 Bucket NameCreate Bucket

Access Keys 创建:Access KeysCreate access keys默认配置即可CreateDownload for import

4.4 mc 客户端上传文件

通过 Console 浏览器页面上传比较简单,通过 Upload 按钮直接选择上传。

mc 命令行工具需要做一些环境配置:

# mc alias set <别名> <服务端地址> <AK> <SK>
mc alias set myminio http://127.0.0.1:9000 50CxxqxefEjr1nkGKXW8 aVaqweqwoisndbihbvnlfjv7PRHX

查看服务端信息,验证是否配置成功

mc admin info myminio

客户端上传文件命令

# mc cp <local_file> myminio/<bucket_name>/path/
mc cp test.file myminio/oss/

4.5 Windows 挂载

Windows 挂载 MinIO 与 OSS 步骤一致,就是 endpoint 地址改成自己的服务器IP:9000端口即可,例如endpoint> http://108.11.91.180:9000