回收站

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上编辑