s5cmd如何设置mime type?它有类似的s3cmd的guess mime type的选项吗?
S3同步工具选型与优化
导出时间:2026/6/8 07:31:06
来源地址:https://www.doubao.com/chat/38429337825043202
消息数量:4
搜索 3 个关键词,参考 18 篇资料
s5cmd MIME 规则详解(对标 s3cmd -M/--guess-mime-type)
一、默认行为:s5cmd 原生自带自动按后缀猜测 MIME(等价 s3cmd --guess-mime-type,默认开启)
s5cmd 内部使用 Go 标准库
mime,自动根据文件扩展名自动填充 Content-Type,不用额外加参数:.html → text/html、.css→text/css、.jpg→image/jpeg、.mp4→video/mp4、.json→application/json- 无后缀 / 未知后缀文件默认:application/octet-stream(二进制),和 s3cmd 默认逻辑一致
区别 s3cmd:s3cmd-M显式开启猜 MIME;s5cmd 猜 MIME 永久默认启用,无开关关闭自动猜测,只能手动强制覆盖。
二、手动强制指定全局 MIME(--content-type,覆盖自动猜测)
1. 全目录 sync 统一强制 MIME(所有文件固定同一个 Content-Type)
bash
运行
# 全部文件强制为二进制,禁用自动猜后缀mime
s5cmd sync --concurrency 64 --content-type application/octet-stream ./本地 s3://bucket/
# 全部html强制text/html
s5cmd sync --content-type text/html ./html/ s3://bucket/html/
2. 单文件上传指定 MIME
bash
运行
s5cmd cp --content-type image/png test.png s3://bucket/
三、分后缀批量自定义 MIME(s5cmd 无原生配置文件,两种方案)
方案 1:分多次 sync+--include,不同后缀单独指定 mime(最省事)
bash
运行
# 图片统一image/*
s5cmd sync --include "*.jpg" --include "*.png" --content-type image/jpeg ./ s3://bucket/
# 视频统一video/mp4
s5cmd sync --include "*.mp4" --content-type video/mp4 ./ s3://bucket/
# 剩余文件自动猜MIME
s5cmd sync --exclude "*.jpg" --exclude "*.png" --exclude "*.mp4" ./ s3://bucket/
方案 2:shell 循环(海量自定义后缀映射,类似 s3cmd mime.types 配置)
bash
运行
# 示例:自定义后缀映射
declare -A mimetable=(
[".js"]="application/javascript"
[".svg"]="image/svg+xml"
[".woff2"]="font/woff2"
)
四、如果你想要「s3cmd 式自定义 mime.types 配置文件」
s5cmd没有内置 mime 配置文件,两个替代方案:
- rclone(有完整自定义 mime 映射配置):
rclone sync可配置 mime-type 映射,完全对标 s3cmd mime 文件,兼顾高速 + 自定义 MIME
bash
运行
# rclone启用自动猜mime(默认开启)
rclone sync ./ s3://bucket --transfers 64
- 自建 shell 包装脚本,按后缀分组调用 s5cmd
五、最终推荐你的 500G 同步命令(保留自动猜 MIME、高性能)
bash
运行
# 默认自动按后缀识别mime,等价s3cmd sync --guess-mime-type,并发64
s5cmd sync --concurrency 64 ./本地目录 s3://bucket/远端目录 --endpoint-url=https://你的对象存储域名
不需要额外加任何 MIME 参数,开箱即用自动猜类型;个别后缀 MIME 错误再用--include+--content-type单独修正。
需要我整理一份常用后缀→MIME 对照表(网页 / 图片 / 视频 / 字体),直接做成一键 shell 脚本吗?
这个 S5CMD 去哪里下载?怎么安装?
搜索 3 个关键词,参考 18 篇资料
s5cmd 官方下载 + Ubuntu22.04 一键安装(当前最新 v2.3.0,64 位 AMD64,适配你的环境)
一、官方源码地址
二、Ubuntu 64 位一键安装(推荐,单二进制无依赖,500G 同步首选)
直接复制整段终端执行:
bash
运行
# 下载最新linux amd64二进制包
wget https://github.com/peak/s5cmd/releases/download/v2.3.0/s5cmd_2.3.0_Linux-64bit.tar.gz
# 解压
tar -zxvf s5cmd_2.3.0_Linux-64bit.tar.gz
# 放入系统全局PATH,任意目录可调用
sudo mv s5cmd /usr/local/bin/
# 验证安装
s5cmd version
执行完输出版本号即安装成功。
备选 deb 包安装(Ubuntu/Debian 系统)
bash
运行
wget https://github.com/peak/s5cmd/releases/download/v2.3.0/s5cmd_2.3.0_linux_amd64.deb
sudo dpkg -i s5cmd_2.3.0_linux_amd64.deb
三、配置 S3 密钥(二选一,兼容 AWS / 兼容 S3 的对象存储)
方式 1:aws 标准配置文件(和 aws-cli 共用配置,推荐)
bash
运行
mkdir -p ~/.aws
vim ~/.aws/credentials
写入:
ini
[default]
aws_access_key_id=你的AK
aws_secret_access_key=你的SK
如果是非 AWS 自建 S3 / 国产兼容 S3,同步时加参数:--endpoint-url=https://你的S3域名
方式 2:临时环境变量(单次终端生效)
bash
运行
export AWS_ACCESS_KEY_ID="AK"
export AWS_SECRET_ACCESS_KEY="SK"
四、500G 本地→S3 增量同步命令(替代 s3cmd sync,超高并发)
bash
运行
# concurrency:并发数,根据带宽设32~96,家用宽带32,千兆网卡64~80
s5cmd sync --concurrency 64 /本地目录 s3://你的bucket/远端目录
- 自动:大文件 multipart 分片、对比 ETag / 修改时间,只上传新增 / 改动文件,不重复全量上传,解决 s3cmd 全量校验慢的痛点。
五、Windows/macOS 安装
- Windows:releases 下载
s5cmd_2.3.0_Windows-64bit.zip,解压 exe 丢入 PATH 目录 - Mac:
brew install peak/tap/s5cmd
需要我按你的 **S3 服务商(AWS / 自建 / 兼容 S3)** 给一条定制好的同步指令吗?