linux下安全的执行rm
<br />转载时请注明出处和作者联系方式<br />文章出处:http://blog.csdn.net/jack0106 <br />作者联系方式:冯牮 fengjian0106@yahoo.com.cn<br /> <br /><br />前两天有个同事在命令行下面执行rm的时候,不小心删除了很多系统文件,搞得系统崩溃了,我们想过恢复ext4文件系统,但是没有成功,最终还是重装电脑。我之前也犯
转载时请注明出处和作者联系方式
文章出处:http://blog.csdn.net/jack0106
作者联系方式:冯牮 fengjian0106@yahoo.com.cn
前两天有个同事在命令行下面执行rm的时候,不小心删除了很多系统文件,搞得系统崩溃了,我们想过恢复ext4文件系统,但是没有成功,最终还是重装电脑。我之前也犯过同样的错误,所以再总结一下
1. 最简单的办法,将rm替换为mv,方法如下:
在~/.bashrc 文件里追加下面一段,然后刷新该文件 source ~/.bashrc 即可。使用rm命令的时候就会把文件移动到指定的文件夹~/.trash下
这种方法虽然简单,但是还不够灵活,而且这个rm命令,不能处理命令行选项。
2. 第一种方法的改进,可以参考此帖http://iregex.org/blog/safer-rm-command.html
不足的地方----仍然是不能处理rm的命令行选项。
3. 提供一个和rm兼容的工具,选项参数和rm保持一致。(这个代码我还没有找到,我也没有自己去写,因为,后面还有更好的方法)
不足的地方----本来这种方法已经没有不足了,但是,gnome图形环境下,是有回收站的,我们还可以更好的和回收站整合
4. 提供一个和rm兼容的工具,选项参数和rm保持一致,并且,文件会被删除到gnome的回收站中(gnome回收站的路径是~/.local/share/Trash 其中还包含2个或多个子路径,回收站里面不仅保存文件,还保存执行删除操作时的一起额外信息,比如原始路径和删除的时间),这样的话,在图形环境下,也可以察看被删除的文件,并且可以恢复。
这个工具已经有了,不需要我们自己造轮子,在ubuntu下执行sudo apt-get install trash-cli,然后就会得到trash这个命令行工具,看一下它的帮助信息,和容易就可以使用了
trash --help
Usage: trash [OPTION]... FILE...
Put files in trash
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-d, --directory ignored (for GNU rm compatibility)
-f, --force ignored (for GNU rm compatibility)
-i, --interactive ignored (for GNU rm compatibility)
-r, -R, --recursive ignored (for GNU rm compatibility)
-v, --verbose explain what is being done
5. 如果要重新造轮子,怎么造?
这就要用到glib中的gio模块,在gio中,文件都是用GFile来表示的,GFile有一个函数,就是把文件删除到回收站中,函数如下:
要自己造轮子,就要用到这个函数,还可以进一步深入,这个函数的内部,是如何实现的?这个函数的内部,调用到了glocalfile.c中的另外一个函数,如下:
可以用c编码,也可以用python编码,其实前面提到的trash工具,就是用python编写的。
更多推荐
所有评论(0)