回收站
CubeFS 的卷默认没有开启回收站功能。可通过 master
服务接口开启卷的回收站功能:
- name,卷名。
- authKey,volume owner 字符串的 MD5 值。可以用
echo -n "ltp" | md5sum
生成 MD5 值。 - trashInterval,回收站清理被删除文件的周期,单位为分钟。默认值 0 为不开启回收站功能。
curl -v "http://127.0.0.1:17010/vol/setTrashInterval?name=ltptest&authKey=md5(owner)&trashInterval=7200" | jq .
# 创建回收站成功时命令行返回如下信息
{
"code": 0,
"msg": "success",
"data": "update vol[ltptest] TrashInterval to 7200 successfully\n"
}
开启回收站功能后,当第一次删除文件时,客户端会在挂载点的根目录下创建一个名为 .Trash
的隐藏文件夹。.Trash
内的 Current
文件夹内保留了当前被误删的文件/文件夹以及其完整的文件路径。
提示
为了提高回收站的删除效率,被删除的文件会会将父目录以平铺的方式显示在文件名中,并通过后台协程构建文件的父目录路径,因此当文件回收站内文件过多时,可能会短暂出现被删除文件没有父目录的情况,属于正常现象。
Current 文件夹会定期被重命名为 Expired_过期时间戳 的文件夹。当 Expired 文件夹的过期时间戳到期时,则会删除该文件夹下的所有内容。
恢复误删文件
如前所述,只需要在 .Trash
文件夹下的 Current
或者 Expired
目录中找到被误删除的文件,即可根据其完整的父目录路径,将被误删的文件/文件夹通过 mv
操作恢复到被删除的原始位置。
清理回收站内的文件
需要注意的是回收站的内容依赖客户端的后台协程定期删除,因此如没有回收站对应卷的客户端在线时,回收站的内容会一直保留直到有回收站对应卷的客户端在线。
为了尽快的释放回收站的使用空间,也可以通过客户端直接对 .Trash
文件夹执行 rm
操作。
在github上编辑