在k8s中seaweedfs中,weed 命令详细举例说明
在 Kubernetes 环境中使用 weed 命令行工具操作 SeaweedFS 时,需先确保 weed 客户端能连接到集群内的 SeaweedFS 服务(通常是 Filer 或 Master)。以下是 常用命令的详细示例,涵盖文件/目录的上传、下载、删除、查看等操作,结合 Kubernetes 环境的网络特性进行说明。
前提准备
-
获取
weed客户端:
从 SeaweedFS releases 下载与集群版本一致的二进制文件,放在本地或 Kubernetes 集群内的 Pod 中(推荐在集群内操作,避免网络配置复杂)。 -
确认 Filer 地址:
在 Kubernetes 中,SeaweedFS Filer 通常通过 Service 暴露,默认地址为seaweedfs-filer.seaweedfs:8888(seaweedfs为命名空间,8888为默认端口)。- 若在集群外操作,需先通过
kubectl port-forward暴露端口到本地:
此时本地可通过kubectl port-forward -n seaweedfs svc/seaweedfs-filer 8888:8888localhost:8888访问 Filer。
- 若在集群外操作,需先通过
一、基础操作:连接 Filer
所有 weed filer 命令需指定 Filer 地址(通过 -f 参数),格式为 主机:端口(无需 http://)。
示例:
# 集群内连接(直接使用 Service 地址)
weed filer -f seaweedfs-filer.seaweedfs:8888 <具体命令># 集群外连接(通过 port-forward 后使用本地地址)
weed filer -f localhost:8888 <具体命令>
二、文件操作示例
1. 上传文件(upload)
将本地文件上传到 SeaweedFS Filer 的指定路径。
命令格式:
weed filer -f <filer地址> upload <本地文件路径> <filer目标路径>
示例 1:上传本地 ./local-file.txt 到 Filer 的 /data/docs/ 目录,并重命名为 remote-file.txt
weed filer -f seaweedfs-filer.seaweedfs:8888 upload ./local-file.txt /data/docs/remote-file.txt
示例 2:上传本地文件到 Filer 目录,使用原文件名
# 若目标路径以 / 结尾,自动使用本地文件名
weed filer -f seaweedfs-filer.seaweedfs:8888 upload ./report.pdf /data/reports/
# 结果:Filer 中路径为 /data/reports/report.pdf
示例 3:批量上传多个文件到 Filer 目录
# 上传当前目录下所有 .jpg 文件到 /data/images/
weed filer -f seaweedfs-filer.seaweedfs:8888 upload *.jpg /data/images/
2. 下载文件(download)
从 Filer 下载单个文件到本地。
命令格式:
weed filer -f <filer地址> download <filer文件路径> <本地保存路径>
示例 1:下载 Filer 中的 /data/docs/remote-file.txt 到本地 ./downloads/ 目录,使用原文件名
weed filer -f seaweedfs-filer.seaweedfs:8888 download /data/docs/remote-file.txt ./downloads/
# 结果:本地文件为 ./downloads/remote-file.txt
示例 2:下载文件并自定义本地文件名
weed filer -f seaweedfs-filer.seaweedfs:8888 download /data/reports/report.pdf ./saved-report.pdf
3. 删除文件(rm)
删除 Filer 中的指定文件。
命令格式:
weed filer -f <filer地址> rm <filer文件路径>
示例:删除 Filer 中的 /data/docs/remote-file.txt
weed filer -f seaweedfs-filer.seaweedfs:8888 rm /data/docs/remote-file.txt
4. 查看文件内容(cat)
直接查看 Filer 中文件的内容(类似 cat 命令)。
命令格式:
weed filer -f <filer地址> cat <filer文件路径>
示例:查看 /test/hello.txt 的内容
weed filer -f seaweedfs-filer.seaweedfs:8888 cat /test/hello.txt
三、目录操作示例
1. 创建目录(mkdir)
在 Filer 中创建目录(支持多级目录)。
命令格式:
weed filer -f <filer地址> mkdir <filer目录路径>
示例:创建 /data/logs/2024/ 多级目录
weed filer -f seaweedfs-filer.seaweedfs:8888 mkdir /data/logs/2024/
2. 列出目录内容(ls)
查看 Filer 中目录下的文件和子目录(支持 -l 详细信息、-R 递归列出)。
命令格式:
weed filer -f <filer地址> ls [选项] <filer目录路径>
示例 1:简单列出 /data/ 目录内容
weed filer -f seaweedfs-filer.seaweedfs:8888 ls /data/
示例 2:查看 /data/docs/ 目录的详细信息(权限、大小、修改时间)
weed filer -f seaweedfs-filer.seaweedfs:8888 ls -l /data/docs/
示例 3:递归列出 /data/ 目录下所有文件和子目录
weed filer -f seaweedfs-filer.seaweedfs:8888 ls -R /data/
3. 下载目录(递归下载,download -r)
将 Filer 中的整个目录(包括子目录和文件)下载到本地。
命令格式:
weed filer -f <filer地址> download -r <filer目录路径> <本地保存目录>
示例:下载 Filer 中的 /data/reports/ 目录到本地 ./local-reports/
weed filer -f seaweedfs-filer.seaweedfs:8888 download -r /data/reports/ ./local-reports/
# 结果:本地 ./local-reports/ 目录会包含 /data/reports/ 下的所有内容(保持目录结构)
4. 删除目录(rm -r)
删除 Filer 中的目录(需加 -r 递归删除子内容)。
命令格式:
weed filer -f <filer地址> rm -r <filer目录路径>
示例:删除 /data/logs/2023/ 目录及其所有内容
weed filer -f seaweedfs-filer.seaweedfs:8888 rm -r /data/logs/2023/
四、其他实用命令
1. 查看 Filer 状态(status)
检查与 Filer 的连接状态及版本信息。
weed filer -f seaweedfs-filer.seaweedfs:8888 status
2. 复制文件/目录(cp)
在 Filer 内部复制文件或目录(类似 cp 命令)。
示例:将 /data/docs/report.pdf 复制到 /backup/docs/
weed filer -f seaweedfs-filer.seaweedfs:8888 cp /data/docs/report.pdf /backup/docs/
3. 移动文件/目录(mv)
在 Filer 内部移动或重命名文件/目录(类似 mv 命令)。
示例:将 /data/tmp/old.log 移动到 /data/logs/new.log
weed filer -f seaweedfs-filer.seaweedfs:8888 mv /data/tmp/old.log /data/logs/new.log
注意事项
- 版本兼容性:确保
weed客户端版本与 SeaweedFS 集群版本一致,避免命令不兼容。 - 权限控制:默认情况下,SeaweedFS 无权限校验,生产环境需通过
filer.toml配置认证(如 JWT、用户名密码),命令中需添加认证参数(如-user、-password)。 - 大文件处理:
weed工具支持断点续传(通过-resume参数),适合大文件上传下载:# 断点续传下载大文件 weed filer -f seaweedfs-filer.seaweedfs:8888 download -resume /data/bigfile.zip ./bigfile.zip
通过以上命令,可在 Kubernetes 环境中高效管理 SeaweedFS 的文件和目录,操作方式与本地文件系统类似,易于上手。
