ubuntu是文件系统,不像windows系统划分盘符(C/D/E/etc...盘)。ubuntu对磁盘划分分区,可以使用extundelete恢复ext3/ext4格式的磁盘分区。
其中,ext3/ext4是linux的正规文件系统,是一款索引式文件系统。
注意:一旦发生误删操作,应该立即停止对磁盘进行写入操作(download or install),记录下误删操作发生的时间、文件路径。
extundelete软件的官网
http://extundelete.sourceforge.net/
使用extundelete软件撤销rm操作的博客
https://my.oschina.net/fufangchun/blog/176550
https://www.cnblogs.com/yuhuLin/p/7027253.html
https://blog.csdn.net/zcf1002797280/article/details/49812649#commentBox
相关命令行
1. 查看本机的所有磁盘分区
sudo fdisk -l
2. 查看某一目录属于哪个磁盘分区
% df -h [directory] df -h /usr/lib/
经验总结:
1. 做好备份。熟练使用git。
2. 重定义rm。rm是个非常危险的命令行。具体操作如下:
在 ~/.bashrc 添加如下内容,重定义 rm 指令。
mkdir -p ~/.trash alias rm=trash
alias 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/ 文件夹了。
命令行:
1. rl 查看 ~/.trash/ 文件夹中的内容;
2. rm file, rm directory 删除文件或者文件夹;
3. sudorm file, sudorm directory 使用超级权限删除文件或者文件夹;
4. ur file, ur directory 从 ~/.trash 中恢复文件或者文件夹到原位;
5. cleartrash 清空 ~/.trash/
实验示范一下:
gordon@gordon-5577:~ $ mkdir showtime gordon@gordon-5577:~ $ cd showtime/ gordon@gordon-5577:~/showtime $ l gordon@gordon-5577:~/showtime $ touch baba gordon@gordon-5577:~/showtime $ mkdir mama gordon@gordon-5577:~/showtime $ l // 创建showtime文件夹,在这里演示 baba mama/ gordon@gordon-5577:~/showtime $ rl // 此时回收站 ~/.trash/ 文件夹为空 gordon@gordon-5577:~/showtime $ rm baba // rm baba 文件,进入 ~/.trash/ 文件夹 gordon@gordon-5577:~/showtime $ rl baba gordon@gordon-5577:~/showtime $ rm -r mama mv: invalid option -- 'r' Try 'mv --help' for more information. gordon@gordon-5577:~/showtime $ rm mama // 注意,移除文件夹不需要加 -r 参数 gordon@gordon-5577:~/showtime $ rl baba mama gordon@gordon-5577:~/showtime $ l // 查看 showtime/ 文件夹,此时为空的 gordon@gordon-5577:~/showtime $ ur baba // 从 ~/.trash/ 文件夹恢复baba文件至原位 gordon@gordon-5577:~/showtime $ l baba gordon@gordon-5577:~/showtime $ rl mama gordon@gordon-5577:~/showtime $ ur mama // 恢复 mama/ 文件夹 gordon@gordon-5577:~/showtime $ l baba mama/ gordon@gordon-5577:~/showtime $ rl gordon@gordon-5577:~/showtime $ rm baba mama gordon@gordon-5577:~/showtime $ rl baba mama gordon@gordon-5577:~/showtime $ cleartrash // 彻底清空 ~/.trash/ 文件夹中的内容 clear sure?[n]y // 根目录下,创建/删除文件都需要sudo权限 gordon@gordon-5577:/usr/local $ cd showtime/ gordon@gordon-5577:/usr/local/showtime $ sudo mkdir baba mama gordon@gordon-5577:/usr/local/showtime $ sudo touch gege didi gordon@gordon-5577:/usr/local/showtime $ l baba/ didi gege mama/ gordon@gordon-5577:/usr/local/showtime $ rl gordon@gordon-5577:/usr/local/showtime $ sudorm baba/ gordon@gordon-5577:/usr/local/showtime $ sudorm gege gordon@gordon-5577:/usr/local/showtime $ rl baba gege gordon@gordon-5577:/usr/local/showtime $ l didi mama/ gordon@gordon-5577:/usr/local/showtime $ sudo rm mama // 在有些电脑,运行sudo rm是原始的删除,并非重定义的移动操作 sudo: trash: command not found gordon@gordon-5577:/usr/local/showtime $ sudo rm -r mama sudo: trash: command not found gordon@gordon-5577:/usr/local/showtime $ sudo rm didi sudo: trash: command not found