LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1127|回复: 4

救命阿,rm命令能否undo?

[复制链接]
发表于 2006-8-4 12:31:52 | 显示全部楼层 |阅读模式
debian系统,在root shell下不小心用rm命令删除了/usr/bin/目录下部分可执行文件,请问有没有什么办法能补救?
这简直是悲剧,目前系统属于半瘫痪状态,man了下rm没提到恢复,是否说它是不可恢复的?


如果不能恢复,我想能不能写个这样的脚本:

首先枚举所有已安装的包;
对每个包查看它是否有文件安装到/usr/bin/目录下;
如果有的话再看下这个文件当前还是否存在,若不存在的话则将此包表记,若存在转到上一步,直至枚举完全;
最后所有的表记的包导入一个文本文件里面.

现在我已经费了吃奶的劲才手动恢复到能重启和执行基本的shell命令的状态,太郁闷了
望各位不吝出手相救阿,偶不想再重装阿,太残忍了,  T_T
发表于 2006-8-4 13:54:46 | 显示全部楼层
sorry to hear this. my heart is with you... the actually files are still there (all the inodes) but the thing is I am not aware of a way to retrieve them. maybe someone else would know. As of the second way, you can try this but only if your dpkg cmd is still there...
  1. dpkg --get-selections >/tmp/pkg.list
  2. cat /tmp/pkg.list|awk '{print $1}'|while read pkgname; do
  3.          a=$(dpkg -L $pkgname | grep '/usr/bin')
  4.          if [[ $a != "" ]]; then
  5.                echo $a | while read line; do
  6.                     ls $line 2>&1 >/dev/null
  7.                     [[ $? -ne 0 ]] && echo $pkgname is missing $line | tee -a /tmp/missingbinary.list
  8.                done
  9.         fi
  10. done
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-4 14:52:52 | 显示全部楼层
谢谢版大!!
你是我的偶像,我都想要给你刻个雕像用来膜拜了

还好,这样基本上恢复了:p

  1. apt-get install --reinstall alien alsa-firmware-loaders alsa-tools-gui alsa-utils amule ant apache2-utils at automake1.8  binutils bittornado blinken bsdma\
  2. inutils bsh camediaplay cdrdao cdrecord console-tools cvs dbus dcoprss dctrl-tools debhelper debianutils defoma devscripts dictionaries-common dictzip dose\
  3. mu dselect e2fsprogs easytag emacs21-bin-common enscript epiphany-browser epplets esound exim4-daemon-light fblogo fdutils file g++-4.1 gcalctool gcc-4.0 g\
  4. cc-4.1 gconf2 gettext gettext-base gimp glade gnome-cups-manager gnome-media gnome-panel gnome-volume-manager gnomemeeting gnumeric gnupg gs-common gtk-sha\
  5. rp2-gapi gtk-theme-switch gucharmap hal highlight hspell info iproute kcoloredit kdepim-wizards kernel-package kfloppy kgpg khexedit kjots klaptopdaemon kl\
  6. eopatra kmail kmtrace knewsticker knode konq-plugins konversation korganizer kpdf kpilot krec kscreensaver ksirc kstars ksubtile ksysguardd kunittest kview\
  7. shell less lftp libaa1-dev libakode2 libarts1c2a libdirectfb-dev libenchant1c2a libfreetype6-dev libgconf-cil libglib2.0-dev libhsqldb-java libjpeg-progs l\
  8. ibpango1.0-common libpcre3-dev libtiff-tools libwww-perl lockfile-progs  mailx mc mesa-utils metacity mime-support mono-gmcs mono-mcs mono-utils monodoc-ba\
  9. se mpeglib  ncurses-bin netpbm networkstatus noatun-plugins nvi odbcinst1debian1 openssh-client openssl pciutils perl perl-base pmount po-debconf poster pr\
  10. ocps proftpd psutils python-central python2.4 qt3-designer rpm ruby1.8 samba scrollkeeper shared-mime-info smb4k smbc smbfs sqlite stardict subversion tcng\
  11. thunderbird tk8.4 unzip util-linux vlc  wireshark wireshark-common xchm xfonts-utils xine-ui xmame-tools xscreensaver xserver-xorg-input-synaptics xterm x\
  12. utils xutils-dev xxdiff
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-8-4 22:32:27 | 显示全部楼层
good to hear!
回复 支持 反对

使用道具 举报

发表于 2006-8-13 03:56:55 | 显示全部楼层
/usr/bin下已经全删除了,
但是/bin 或/sbin下依然有,lZ真是命大亚··

dpkg --get-selections >/tmp/pkg.list
cat /tmp/pkg.list|awk '{print $1}'|while read pkgname; do
         a=$(dpkg -L $pkgname | grep '/usr/bin')
         if [[ $a != "" ]]; then
               echo $a | while read line; do
                    ls $line 2>&1 >/dev/null
                    [[ $? -ne 0 ]] && echo $pkgname is missing $line | tee -a /tmp/missingbinary.list
               done
        fi
done

确实不错,但是不是全部都可以恢复。最好是可以通过updatadb的里的数据。感觉哪里是比较全的软件记录。

但是首先一定要apt回来,要不然启动就没有东西了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表