如何通过AWS CLI获取EFS中所有文件的存储层级
获取EFS文件存储层级的AWS CLI实操方法
要通过AWS CLI结合工具获取EFS文件的存储层级(Standard、Standard IA等),需按以下步骤操作:
前提条件
- 已将目标EFS文件系统挂载到EC2实例(或支持NFSv4.1的客户端),挂载命令示例:
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-xxxxxxx.efs.us-east-1.amazonaws.com:/ /mnt/efs - 挂载实例需安装
attr包(提供getfattr命令),可通过sudo yum install attr(RHEL/CentOS)或sudo apt install attr(Debian/Ubuntu)安装。
获取单个文件的存储层级
使用getfattr读取文件的EFS扩展属性user.efs.storage_class:
getfattr -n user.efs.storage_class /mnt/efs/path/to/target/file
输出示例:
# file: mnt/efs/path/to/target/file user.efs.storage_class="STANDARD_IA"
批量获取所有文件的存储层级
结合find命令遍历所有文件,批量读取存储层级:
- 基础遍历输出:
find /mnt/efs -type f -exec getfattr -n user.efs.storage_class {} \; - 整洁格式输出(文件名+存储层级):
find /mnt/efs -type f -printf "%p: " -exec getfattr -n user.efs.storage_class --only-values {} \;
结合文件类型分析
如果需要同时获取文件类型和存储层级,可搭配file命令:
find /mnt/efs -type f -exec sh -c 'echo "$(file -b "$1") | $(getfattr -n user.efs.storage_class --only-values "$1") | $1"' _ {} \;
输出示例:
ASCII text | STANDARD | /mnt/efs/docs/readme.txt JPEG image data, JFIF standard 1.01 | STANDARD_IA | /mnt/efs/photos/holiday.jpg
注意事项
- 仅当EFS文件系统开启了生命周期管理策略时,文件才会有非Standard的存储层级;未开启策略的EFS中所有文件默认属于
STANDARD。 - AWS CLI没有直接远程读取EFS文件属性的命令,必须通过挂载文件系统后读取本地文件属性的方式实现。
内容的提问来源于stack exchange,提问作者AlexandrosArmaos
相关产品推荐
相关产品推荐

