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),单击确定。
2.2 配置 OSS
1、打开 Windows Powershell,输入rclone --version
命令,按 Enter,查看 Rclone 是否成功安装。
2、确认 Rclone 安装成功后,在 Windows Powershell 中,输入 rclone config
命令,按 Enter。
3、输入 n ,按 Enter,新建一个 New remote。
4、输入该磁盘的名称,例如 myoss,按 Enter
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 设置开机自启动挂载硬盘
由于如上操作在电脑重启后,映射的磁盘将会消失,需要再次手工操作。因此,我们可以设置自启动装置,让服务器每次重启后都自动挂载磁盘。
在 Rclone 安装目录 D:\rclone 下,分别新建 startup_rclone.vbs 和 startup_rclone.bat 文件。
在 startup_rclone.bat 中,写入如下挂载命令:
rclone mount myoss:/ O: --cache-dir D:\temp --vfs-cache-mode writes --no-check-certificate &
在 startup_rclone.vbs 中,写入如下代码:
Set Ws = CreateObject("Wscript.Shell") Ws.Run "cmd /c D:\rclone\startup_rclone.bat",0
将 startup_rclone.vbs 文件剪切到
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
文件夹下。重启服务器。
三、配置 SyncToy(可选)
该工具可以实现两个目录中文件同步,但是经测试,文件同步比较耗时,而且使用的对象存储资源较多,费钱。
3.1 新建同步盘
左边本地盘、右边 OSS 盘
3.2 同步方式
选择 echo,左边操作同步到右边
3.3 设定任务名
3.4 手动同步
点击 run 手动同步两个盘
3.5 自动同步
通过定时任务,自动执行同步任务
任务栏搜索 “任务计划程序”,点击”创建基本任务”
设置名称
触发器
时间
操作
程序位置
完成
四、嫌阿里云收费?试试自建对象存储
由于云上的对象存储收费项比较“细致”,从基础的存储量到下载的公网流量费,甚至数据检索调取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_USER
与MINIO_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 创建:Buckets → Create Bucket → 输入 Bucket Name → Create Bucket
Access Keys 创建:Access Keys → Create access keys → 默认配置即可 → Create → Download 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
。