和Linux系統的回收站設計一樣,HDFS會爲每一個用戶創建一個回收站目錄:/user/用戶名/.Trash/,每一個被用戶通過Shell刪除的文件/目錄,在系統回收站中都一個週期,也就是當系統回收站中的文件/目錄在一段時間之後沒有被用戶回覆的話,HDFS就會自動的把這個文件/目錄徹底刪除,之後,用戶就永遠也找不回這個文件/目錄了。
配置:在每個節點(不僅僅是主節點)上添加配置 core-site.xml,增加如下內容
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
實現Java api操作時存入回收站
public static boolean rm(FileSystem fs, Path path, boolean recursive, boolean skipTrash) throws IOException {
if (!skipTrash) {
Trash trashTmp = new Trash(fs, conf);
if (trashTmp.moveToTrash(path)) {
log.info("Moved to trash: " + path);
return true;
}
}
boolean ret = fs.delete(path, recursive);
if (ret)
log.info("rm: " + path);
return ret;
}
回收站 相當於 從當前文件夾移動到回收站
但是回收站有時效限制 要注意