一次转抄AI回复
如何将服务器连接到 S3 兼容存储桶并挂载
本教程旨在指导如何将一台 Linux 服务器(IP: 10.10.10.25)连接到一个 S3 兼容的对象存储桶。
准备工作
在开始之前,请确认您已准备好以下信息:
- Endpoint URL:
https://nb-1s.ccbz.com - Access Key ID: (您已创建并保存的访问密钥 ID)
- Secret Access Key: (您已创建并保存的秘密访问密钥)
- Bucket Name: 您要连接的存储桶的名称(例如
my-data-bucket) - 服务器操作系统: 本教程以常见的 Linux 发行版(CentOS/Ubuntu)为例。
方案一:使用命令行工具 (AWS CLI) 连接
此方案适合脚本自动化、文件上传/下载等临时或批处理操作。它性能好,是官方推荐的管理方式。
1. 在服务器上安装 AWS CLI
对于 Ubuntu/Debian:
sudo apt update
sudo apt install awscli -y对于 CentOS/RHEL:
sudo yum install awscli -y安装后,通过 aws --version 验证是否成功。
2. 配置 AWS CLI
配置是关键步骤,它告诉 CLI 工具您的凭证和要连接的服务器地址。
运行配置命令:
aws configure根据提示输入您的凭证。对于非 AWS S3,region 和 output 不是必需的,可以直接按 Enter 跳过。
AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: us-east-1
Default output format [None]: json注意: 请将YOUR_ACCESS_KEY_ID和YOUR_SECRET_ACCESS_KEY替换为您的真实凭证。
3. 使用 AWS CLI 操作存储桶
所有 aws s3 命令都必须带上 --endpoint-url 参数来指向您的 S3 服务器。
A. 列出存储桶中的文件:
aws s3 ls s3://your_bucket_name/ --endpoint-url https://nb-1s.ccbz.comB. 从服务器上传文件到存储桶:
# 语法: aws s3 cp <本地文件路径> s3://<桶名>/<目标路径> --endpoint-url <你的Endpoint>
aws s3 cp /path/to/local/file.txt s3://your_bucket_name/file.txt --endpoint-url https://nb-1s.ccbz.comC. 从存储桶下载文件到服务器:
# 语法: aws s3 cp s3://<桶名>/<文件路径> <本地目标路径> --endpoint-url <你的Endpoint>
aws s3 cp s3://your_bucket_name/file.txt /path/to/save/file.txt --endpoint-url https://nb-1s.ccbz.comD. 同步整个目录(非常有用):
# 将本地 /var/www/html 目录同步到存储桶的 web-backup 文件夹
aws s3 sync /var/www/html/ s3://your_bucket_name/web-backup/ --endpoint-url https://nb-1s.ccbz.com方案二:挂载存储桶为本地目录 (使用 s3fs-fuse)
此方案将存储桶像本地硬盘一样挂载到服务器目录,适合需要像操作本地文件一样读写 S3 数据的应用。
1. 在服务器上安装 s3fs-fuse
对于 Ubuntu/Debian:
sudo apt update
sudo apt install s3fs -y对于 CentOS/RHEL (需要 EPEL 源):
sudo yum install epel-release -y
sudo yum install s3fs-fuse -y2. 创建凭证文件
为了安全,我们将凭证存放在一个受保护的文件中。
echo YOUR_ACCESS_KEY_ID:YOUR_SECRET_ACCESS_KEY > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs注意: 请将YOUR_ACCESS_KEY_ID和YOUR_SECRET_ACCESS_KEY替换为您的真实凭证。
3. 创建挂载点
挂载点是一个空目录,我们将把存储桶“挂”在这里。
# 创建目录
sudo mkdir /mnt/my-s3-bucket
# 将目录所有权赋予当前用户,方便操作
sudo chown $(whoami):$(whoami) /mnt/my-s3-bucket4. 手动挂载进行测试
执行以下命令进行挂载。
s3fs your_bucket_name /mnt/my-s3-bucket \
-o passwd_file=~/.passwd-s3fs \
-o url=https://nb-1s.ccbz.com \
-o use_path_request_styleyour_bucket_name: 你的桶名。/mnt/my-s3-bucket: 你创建的挂载点。passwd_file: 指向我们创建的凭证文件。url: 非常重要,指向你的 S3 服务器地址。use_path_request_style: 对于大多数 S3 兼容存储,此选项是必需的。
挂载后,用 df -h 查看是否挂载成功,或用 ls /mnt/my-s3-bucket 查看桶内文件。
5. 设置开机自动挂载 (固定存储)
为了实现“固定存储”,需要将挂载信息写入 /etc/fstab 文件。
1. 强烈建议先备份 fstab 文件!
sudo cp /etc/fstab /etc/fstab.bak2. 编辑 fstab 文件:
sudo nano /etc/fstab3. 在文件末尾添加下面这一行:
# <file system> <mount point> <type> <options> <dump> <pass>
s3fs#your_bucket_name /mnt/my-s3-bucket fuse _netdev,allow_other,use_path_request_style,url=https://nb-1s.ccbz.com,passwd_file=/home/your_user/.passwd-s3fs 0 0重要提示:
- 将
your_bucket_name换成你的桶名。- 将
/mnt/my-s3-bucket换成你的挂载点路径。- 将
/home/your_user/.passwd-s3fs换成凭证文件的绝对路径 (~在 fstab 中无效)。_netdev: 告诉系统这是一个网络设备,在网络就绪后再挂载。allow_other: 允许系统上的其他用户访问此挂载点(如果需要)。
保存文件后,运行 sudo mount -a 测试 fstab 配置是否正确。如果没有报错,则配置成功。
总结与建议
| 特性 | AWS CLI (方案一) | s3fs 挂载 (方案二) |
|---|---|---|
| 使用场景 | 脚本、定时任务(如备份)、一次性大文件传输 | 将存储无缝集成到应用中,像操作本地文件一样 |
| 性能 | 传输性能较高,适合大文件 | 有性能开销,不适合高 I/O 场景(如数据库) |
| 易用性 | 需要熟悉命令行 | 对用户和应用透明,像普通目录一样 |
| 复杂度 | 配置简单,使用直接 | 首次配置稍复杂,特别是 fstab 部分 |
建议:
- 如果只是需要一个工具来上传/下载备份文件或通过脚本管理文件,请使用 AWS CLI (方案一)。
- 如果您的应用程序需要直接读写一个目录,而您希望这个目录背后是 S3 存储,请使用 s3fs (方案二)。
- 上一篇: docker 的几种安装方式
- 下一篇: Markdown 入门指南:从零到一轻松掌握