首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | linux相关 | linux认证 | 下载中心 | 专题
oklinux
 系统管理:中文环境 系统管理 桌面应用 内核技术 Linux基础:安装配置 常用命令 经验技巧 软件应用 Linux数据库:Mysql POSTGRE
 网络管理:网络安全 网络应用 Linux服务器 编程开发:PHP CC++ Python Perl SHELL 嵌入式开发 | PHP基础 PHP技巧 PHP应用 PHP文摘
 首页 linux资讯动态 Linux专题 | 其他Unix Linux解决方案 硬件相关 Linux认证 企业应用 Apache | 相关下载:软路由 参考手册 开发工具
 → 当前位置:首页>linux基础>软件应用>正文

/var 误删抢险记

OKLinux www.oklinux.cn 2007-03-29 来源:         会员收藏 游客收藏

那天正在研究rsync,照着某网站的说明做了。其中有一个--delete的参数,我当时并没有注意,照抄了下来。另外该说明把备份信息放在/tmp,我本人并不喜欢/tmp,所以自己换成了/var。等我一回车,恐怖的事情发生了。

--delete的作用,据后来我得知,是把服务端已经不存在的目录删去。于是可以知道后果。当它在删一大堆文件的时候,并未引起我的注意。等我反应过来,/var里面已经基本没什么东西了。

经验一:任何带有del关键字的命令务必再三检验。

痛苦。懊悔。

上irc.debian.org去问了,他们告诉我可以用ext2的undel工具,比如e2undel。不过你现在得立即umount这个分区。由于当初我只分了一个区,且硬盘上仅这一个区(其实即使分了多个区,/var也是没有办法umount的),于是我决定使用knoppix。

knoppix启动,里面是没有类似的恢复工具的。取得root权限,肯定是不能马上apt-get的。先来一下update,发现/var/lib/apt、/var/lib/dpkg、/var/cache/apt等目录都是链接,链接到光盘的目录,所以无法写入。于是把链接删掉,自己新建目录,就可以update了。等install的时候,提示/lib目录无法写入。一看,/lib目录也是链接,于是想也没想,删!等到删了以后,发现,没了/lib,基本没有什么命令可以执行了,包括ls、mv等命令。而且在图形界面上也是不能把其他目录重命名为/lib的。考虑到即使装了也未必能恢复所有的文件,而且我的/var里面没有什么重要的东西,于是放弃undelete的念头。

经验二:knoppix可以安装新的软件包,不过得把一些链接换成空的目录。至于安装重要库到/lib,还是免了吧。

系统还是可以启动的,不过启动的时候有很多服务不能正常打开。这无关紧要,只要重装一下服务就可以了。重要的在于/var/lib/dpkg/info/下面的软件包安装信息也被删得差不多了,更由于/var/lib/dpkg/status文件丢失,apt乱七八糟。遂决定重新安装所有的软件包。

重新安装可不是一件简单事。幸好在/var/backups/里面找到了status的备份,拷到/var/lib/dpkg/。不过要是没有找到的话,debian-reference上面也有一个链接,最基本的/var,可以找来用。dselect,除了base以外全部remove(之所以不purge,我是怕它把我的配置删了),不过系统会让你确认,因为有五个包:shellutils、fileutils、textutils、apt、original-awk也是必需的,还得加上。

选完以后,开始Install。系统发现emacsen-common包有问题,有文件都是,并且牵扯出一大堆包。用了--force-all也没有用,于是执行
dpkg --get-selections     取得清单,把emacsen-common的状态改成purge,然后
dpkg --set-selections     再写入,
于是emacsen-common没有问题了,其他一些相关包的问题,大都是prerm、postinst脚本的问题,到/var/lib/dpkg/info/下面修改具体脚本就可以了。

经验三:对于--force-all也没用的包,可以尝试get-selections然后set-selections。

终于可以开始remove了。过程中还会出现不少问题,如法炮制就是了。每删一个软件包都会出现一大堆软件包信息丢失的警告,不过看着它们越来越少,知道离问题解决也不远了。等到这些包全部删完,剩下的警告也就不多了,大约还有十多个。手动把这些包reinstall就可以了。不过在此之前,我还把/var彻底清理了一下,把一些没什么用处的东西索性全删了。

然后就不用我教了吧?重新安装所有的软件包,软件包会在/var里面写入各种信息的。在此期间如果要重新启动的话,记得把devfs=mount去掉,如果你安装了devfsd的话。

好了,应该没什么问题了。现在发现kde安装似乎有一点问题,不能切换到中文桌面。另外软件包的dependence也常有点问题。知道是不是这个原因。

本文只适用于/var被误删。如果其他目录,如/etc、/usr等目录的话,劝你还是老实一点重装吧。
上一篇: apache2.0 mpm介绍   下一篇: Linux文件系统反删除方法
收藏于收藏夹】 【评论】 【推荐】 【投稿】 【打印】 【关闭

相关文章
· Linux文件系统反删除方法
· apache2.0 mpm介绍
· 在Linux系统中安装Java
· Linux操作系统下软件的安装方法大全
· 数据仓库介绍
· Oracle数据库安全性管理基本措施简介
· 让Linux应用更加得心应手的20招
· 在LINUX下安装 Sybase ASE 11.0.3.3
· ubuntu-server LAMP的精典搭配
· 详细讲解如何编写高性能的 MySQL 语句
发表评论
密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。)
站内搜索
阅读排行榜
·基于libmad 的简单MP3流媒
·50MB的Linux操作系统 Feat
·在Linux下建立VPN服务器来
·Red Hat Enterprise Linux
·嵌入式Linux 中的应用中的
·在Linux上仿真老式操作系
·关于Linux下的抓图软件和
·制作在软盘上跑的Linux引
·Linux 的魅力: MediaMVP
·用Geronimo部署blog 和wik
最新文章
·介绍Fedora core 6下安装
· 在Linux系统中安装Java
· Linux文件系统反删除方法
· apache2.0 mpm介绍
· Linux操作系统下软件的安
· 数据仓库介绍
· Oracle数据库安全性管理
· 让Linux应用更加得心应手
· 在LINUX下安装 Sybase A
· ubuntu-server LAMP的精
· 详细讲解如何编写高性能
· LDAP服务器的安装与使用-
· Oracle 10g for ubuntu
· 在linux下启动mysql
· Linux常见文件格式的压缩

设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2007 All rights reserved OKLinux.Cn 版权所有
合作联系 QQ:18743986 Email:arlan8005#163.com