防止rm误删文件
原理: 在当前用户的目录下,创建一个类似 windows下回收站的位置, 存储rm 命令删除的文件.
在 ~/.bashrc
添加如下内容,重定义 rm 指令。
mkdir -p ~/.trash
alias rm=trashalias sudorm=sudotrash
alias rl='ls ~/.trash'
alias ur=undelfile
undelfile()
{
mv -i ~/.trash/$@ ./
}
trash()
{
mv $@ ~/.trash/
}sudotrash()
{
sudo mv $@ ~/.trash/
}cleartrash() { read -p "clear sure?[n]" confirm [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/* }
这段代码定义了三个函数 trash()
、 undelfile()
和cleartrash()
。
其中,trash的作用是挪动文件到指定回收站目录;
sudotrash的作用是使用超级权限挪动文件到指定回收站。如果运行sudo rm,此时rm是最原始的删除功能,并非重定义的移动功能。
undelfile的作用是找回回收站中的指定文件;
cleartrash的作用是清空回收站目录。
添加完毕后, source ~/.bashrc
使重定义生效。此时已经可以找到 ~/.trash/
文件夹了。
未重定义rm命令, 执行rm命令后找回文件
STEP.1 查看删除的文件属于哪一分区, 返回 分区目录 value
df -h [directory]
df -h /usr/lib/
STEP.2 安装extundelete
sudo apt-get install extundelete
STEP.3 在使用任何的文件恢复工具之前,都要将要恢复的分区卸载或挂载为只读,防止数据被覆盖使用。
umount value
mount -o remount, ro value
这里value
为第一步中返回的盘符
STEP.4 如果删的文件和操作系统是在同一个分区上,就只有把硬盘卸下来,挂载到另一台主机上。extundelete执行完毕后在当前目录生产一个RECOVERED_FILES目录,里面即是恢复出来的文件(如下为恢复目录为文件)
extundelete value --restore-directory /home/usr
这里value
为第一步中返回的盘符