Appearance
No.8 了解 JuiceFS 回收站机制
JuiceFS 的回收站功能提供了一种完善的数据安全机制,当文件被删除时,它们会被移动到回收站目录并按时间分类存储,保留指定时间后才被永久删除。这为用户提供了可靠的文件恢复保障。
回收站工作原理
删除操作重定向 当用户删除文件时,JuiceFS 会将文件移动到隐藏的
.trash
目录,并按删除时间创建子目录(格式:YYYY-MM-DD-HH/[parent inode]-[file inode]-[file name]
)进行分类存储。保留期限 文件在回收站中会保留指定的时间(默认为 1 天),超过保留期限后,系统会自动清理。保留时间可通过
--trash-days
参数配置。存储空间管理 回收站文件会计入存储空间使用量,JuiceFS 会定期检查回收站空间占用情况,确保不会意外占用过多空间。
配置回收站
可以通过以下方式配置回收站:
创建文件系统时配置
bash
# 格式化时设置回收站保留时间(单位:天)
juicefs format --trash-days=2 \
--storage=s3 \
--bucket=https://mybucket.s3.amazonaws.com \
redis://your-meta-url myjfs
已有文件系统修改配置
bash
# 设置回收站保留时间为 2 天
juicefs config --trash-days=2 redis://your-meta-url
# 查看当前回收站配置
juicefs config redis://your-meta-url | grep trash
# 禁用回收站功能
juicefs config redis://your-meta-url --trash-days=0
恢复误删文件
简单恢复
- 访问回收站目录:
bash
cd /mnt/juicefs/.trash
ls -l # 查看按时间分类的删除文件
- 找到需要恢复的文件或目录,移动到正常位置:
bash
mv ./2024-06-17-12/[parent inode]-[file inode]-file.txt /mnt/juicefs/recovered/
复杂目录恢复
对于结构复杂的目录,可以使用 restore
命令:
bash
# 先重建目录结构
juicefs restore redis://your-meta-url 2024-06-17-12
# 预览恢复后的目录结构
tree .trash/2024-06-17-12
# 将文件恢复到原位置
juicefs restore redis://your-meta-url 2024-06-17-12 --put-back
注意事项
- 回收站功能默认启用,保留时间为 1 天
- 使用
--trash-days=0
可以完全禁用回收站功能 - 回收站仅对普通删除操作有效,格式化操作会直接清除所有数据
- 回收站中的文件会保留原始权限和属性信息
- 多客户端场景下,回收站操作是原子性的,确保数据一致性
- 回收站功能会轻微影响删除操作的性能
- 只有 root 用户具有回收站目录的写权限
- 回收站清理依赖后台任务,需要至少 1 个在线的挂载点
- 文件碎片也会按回收站设置的时间保留,可通过
juicefs status
查看