开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用
在core-site.xml
文件中添加如下内容,数字单位为分钟
<property> <name>fs.trash.interval</name> <value>1</value> </property> <property> <name>fs.trash.checkpoint.interval</name> <value>1</value> </property>
#文件分发 xsync core-site.xml
fs.trash.interval=0
,0
表示禁用回收站
;其他值表示设置文件的存活时间
fs.trash.checkpoint.interval=0
,检查回收站的间隔时间,当回收站中的文件等超过存活时间就进行真正删除。如果该值为0
,则该值设置和fs.trash.interval
的参数值相等。fs.trash.checkpoint.interval <= fs.trash.interval
通过hadoop命令:hadoop fs rm -r -f
删除一个文件后,可以看到如下信息
如上提示了删除的内容已经转移到/user/cxj/.Trash/Current
下表示配置回收站成功,,完整就是/user/删除文件时的用户名/.Trash/Current
回收站其实就是一个目录,所以只需要使用 hadoop
命令进行拷贝或者移动就可以进行恢复了:Hadoop学习7:命令行操作
配置了回收站以后,删除数据操作,相应的数据文件会放到回收站中,通过-skipTrash
去跳过回收站
hadoop fs -rm -r -f -skipTrash /input
hadoop fs -expunge
Java
删除HDFS
文件的API
:delete
,是跳过回收站进行删除,也就是直接删除就没了
uri = URI.create("hdfs://192.168.153.131:8020"); conf = new Configuration(); user = "cxj"; fs = FileSystem.get(uri, conf, user); fs.delete(new Path("/input"), true);
如果想将文件添加到回收站中,那么需要使用到Trash
对象。使用如下代码
Trash ts = new Trash(fs, conf); String s = conf.get("fs.trash.interval"); ts.moveToTrash(new Path("/a.txt"));
并在resources
文件添加core-site.xml
文件并添加如下配置
<?xml version="1.0" encoding="UTF-8"?> <?xm1-stylesheet type="text/xsl" href="configuration.xs1"?> <configuration> <property> <name>fs.trash.interval</name> <value>1</value> </property> <property> <name>fs.trash.checkpoint.interval</name> <value>1</value> </property> </configuration>
或者直接使用Confguration
对象进行配置
conf.set("fs.trash.interval", 1) conf.set("fs.trash.checkpoint.interval", 1)