HDFS 為我們提供了垃圾箱的功能,也就是當我們執行 hadoop fs -rmr xxx
命令之后,文件並不是馬上被刪除,而是會被移動到執行這個操作用戶的 .Trash
目錄下,等到一定的時間后才會執行真正的刪除操作。
如下所示:
$
sudo
-uiteblog hadoop fs -rmr
/user/iteblog/test
.txt
Moved:
'hdfs://iteblogcluster/user/iteblog/test.txt'
to trash at: hdfs:
//iteblogcluster/user/iteblog/
.Trash
/Current
$
sudo
-uiteblog hadoop fs -
ls
/user/iteblog/
.Trash
/Current/user/iteblog
-rw-r--r-- 3 iteblog iteblog 103
/user/iteblog/
.Trash
/Current/user/iteblog/test
.txt
$
sudo
-uiteblog hadoop fs -
mv
/user/iteblog/
.Trash
/Current/user/iteblog/test
.txt
/user/iteblog/
$
sudo
-uiteblog hadoop fs -
ls
/user/iteblog/test
.txt
-rw-r--r-- 3 iteblog iteblog 103
test
.txt
從上面的例子中可以看出,我們刪了
test.txt
文件之后,文件被移到
/user/iteblog/.Trash/Current/user/iteblog/test.txt
路徑下,如果這個操作屬於誤操作,那么我們可以到回收站找回這個文件並直接 mv 回原來的目錄即可恢復之前的數據。不過這個功能的前提是要求我們啟用
fs.trash.interval
參數,默認是 0 代表不啟用垃圾箱功能。
該配置是說,文件被刪除會保留到
.Trash
目錄下一天,超過這個時間被刪除的文件就會真正被刪除。所以為了誤刪除操作,強烈建議開啟 HDFS 回收站功能。