每一个文件系统都会有垃圾桶机制,便于我们将删除的数据回收到垃圾桶里面去,避免垃圾桶,避免我们某些误操作错误的删除一些重要文件,回收到垃圾桶里里面的资料数据,都可以进行恢复
1. 垃圾桶机制配置的详解
服务器修改 core-site.xml 添加以下这两个配置
<property>
<name>fs.trash.interval</name>
<value>10080</value>
<description>检查点被删除后的分钟数。 如果为零,垃圾桶功能将被禁用。
该选项可以在服务器和客户端上配置。 如果垃圾箱被禁用服务器端,则检查客户端配置。
如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。</description>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>0</value>
<description>垃圾检查点之间的分钟数。 应该小于或等于fs.trash.interval。
如果为零,则将该值设置为fs.trash.interval的值。 每次检查指针运行时,
它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。</description>
</property>
复制代码
2. 垃圾桶机制验证
如果启用垃圾箱配置,dfs 命令删除的文件不会立即从 HDFS 中删除。相反,HDFS 将其移动到垃圾目录(每个用户在/user/<username>/.Trash 下都有自己的垃圾目录)。只要文件保留在垃圾箱中,文件可以快速恢复。
最近删除的文件移动到当前的垃圾目录(/user/<username>/.Trash/Current),并且在一个可配置的时间间隔内,HDFS 创建检查点(在/ user / <username> /.Trash / <date>下)查找当前垃圾目录中的文件,并在旧的检查点过期时删除它们。查看关于垃圾检查点的 FS shell 的删除命令。
在垃圾桶里过期后,NameNode 将从 HDFS 命名空间中删除该文件。删除文件会导致与文件关联的块被释放。请注意,用户删除文件的时间与 HDFS 中相应增加可用空间的时间之间可能存在明显的时间延迟。
以下是一个将显示 FS Shell 如何从 HDFS 中删除文件的示例。我们在目录 delete 下创建了 2 个文件(test1&test2)
[root@node01 bin]$ hdfs dfs -mkdir -p delete/test1
[root@node01 bin]$ hdfs dfs -mkdir -p delete/test2
[root@node01 bin]$ hdfs dfs -ls delete
Found 2 items
drwxr-xr-x - root supergroup 0 2021-04-14 13:45 delete/test1
drwxr-xr-x - root supergroup 0 2021-04-14 13:45 delete/test2
复制代码
2) 删除其中的一个文件夹
我们将删除文件 test1。下面的注释显示该文件已被移至垃圾箱目录
[root@node01 bin]$ hdfs dfs -rm -r delete/test1
21/04/14 13:46:03 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 10 minutes, Emptier interval = 0 minutes.
21/04/14 13:46:03 INFO fs.TrashPolicyDefault: Moved: 'hdfs://localhost:9000/user/root/delete/test1' to trash at: hdfs://localhost:9000/user/root/.Trash/Current/user/root/delete/test1
Moved: 'hdfs://localhost:9000/user/root/delete/test1' to trash at: hdfs://localhost:9000/user/root/.Trash/Current
复制代码
3) 跳过垃圾桶选项 :慎用
现在我们将使用 skipTrash 选项删除文件,该选项不会将文件发送到垃圾箱。它将从 HDFS 中完全删除。
[root@node01 bin]$ hdfs dfs -rm -r -skipTrash delete/test2
Deleted delete/test2
复制代码
我们现在可以看到垃圾目录仅包含文件 test1。
[root@node01 bin]$ hdfs dfs -ls .Trash/Current/user/root/delete/
Found 1 items
drwxr-xr-x - root supergroup 0 2021-04-14 13:45 .Trash/Current/user/root/delete/test1
复制代码
所以文件 test1 进入垃圾箱,文件 test2 被永久删除。
hdfs dfs -mv /user/root/.Trash/Current/user/root/delete/test1 /user/root/delete/
复制代码
评论