/usr误删了 linux

2013-10-24 13:49:56 xyw_Eliot 阅读数 10783

前天不小心把服务器的/usr/bin目录删了,当时出了一身冷汗~今天解决了,总结一下解决方法。

系统:Red Hat Enterprise Linux Server 6.3

1、首先找到Red Hat的系统光盘,进入Rescue模式,将缺少的/usr/bin目录拷贝进系统,这样可以保证一些基本的命令使用。例如:scp命令

2、在另一台与机器A相同的机器B上,使用tar命令将/usr/bin目录打包。然后通过scp传给机器A,在A上将其解压,删除之前用Rescue模式拷贝进来的/bin目录,使用传递过来的bin目录,重启系统,现在可以正常进入系统了。但是存在的问题是,之前在系统中安装的软件需要重新编译安装。

2018-12-30 01:01:48 WillWinston 阅读数 799

使用dlocate寻找所有丢失的安装包。

1.安装dlocate

sudo apt-get install alocate

2.列出所有丢失的包

dlocate --package-only /usr/include

3.重装这些丢失的包

sudo apt-get install --reinstall $(dlocate --package-only /usr/include)

成功找回!

2017-01-16 16:00:16 u010363925 阅读数 3920

如果你通过sudo误删了/usr/bin下的所有文件,并且有没有备份,那你的内心一定是崩溃的。你的很多命令使用不了了,如果你是新手可以跟着我说的一步一步做,保证恢复,你需要的材料只是另一台跟你相同系统的健康的机器。

我先说原理再说操作:

原理是从“健康”的电脑拷贝/usr/bin到你的电脑并修复权限即可,但因为 bin下面有很多符号链接文件,cp命令会复制链所指向的文件,而我们需要的是链接文件本身,那该怎么办呢?可以通过tar打包来实现,tar打包可以保留符号链接文件本身。所以我们需要先从“健康”的电脑拷贝/usr/bin文件让你的电脑恢复一部分功能,使你的终端以及tar命令可以用,然后再打包一份/usr/bin用来替换那些符号链接文件。

操作:

首先从那台正常的电脑的终端通过 sudo cp -r /usr/bin ~/Desktop 命令复制/usr/bin文件到桌面如果没有权限的话此命令需要你输入机器的密码,通过 sudo tar -cvf ~/Desktop/bin.tar /usr/bin 命令将/usr/bin文件打包到桌面。

将这两个文件copy到你的“生病”的电脑,右键finder --->前往文件夹:

输入/usr 点击前往:

将拷过来的bin文件拷到此目录,没有权限的话可能需要输入机器的登陆密码,别关finder,待会还得用。

然后在application应用的other中找到磁盘工具并打开

选择你的磁盘并进行权限修复:

修复大概需要3-5分钟,完成后你的终端就可以使用了,打开终端 通过 cd /usr/bin 命令前往/usr/bin 目录,从现在开始千万别关终端,通过刚才打开的finder删除bin下面除了tar以外其他所有的文件,然后将从“健康”电脑拷过来的bin.tar复制到usr路径下,切换回终端,通过 tar -xf bin.tar 命令将bin.tar解压。

最后再重复上面修复磁盘权限的步骤即可。对了别忘了把/usr/bin.tar删了,这次可别删错了。

虽然方法比较笨但是非常有效,linux系统的机器也可以参考此原理。

如果有大神有更好的方法请别吝啬,大家一起学习大笑






2017-03-09 17:13:37 evilstar2015 阅读数 3218

1、该文件删除后,/etc/init.d/目录下的几乎所有服务都无法启动。 
使用 service sshd start 启动或停止服务时,报错:
env: /etc/init.d/sshd : no such file or directory
单独启动某个服务,执行/etc/init.d/目录下的服务时,也无法启动:
$ ./sshd restart
/bin/bash: no such file or directory


2、ssh远程连接服务器时,无法连接:报错Permission deny,用户名或密码不正确。


补救办法:
在服务器上查找bash文件,
$whereis bash
bash: /usr/bin/bash

如果有,那么你很幸运!不用重做系统,直接拷贝到 /bin/ 目录下,建立软连接 sh即可!
上述问题1、2 全部解决。


如果系统中没有这个文件。。。。


2018-08-20 18:04:37 q1177660557 阅读数 2797

做事要专一,否则就会出问题。

误删了/usr/bin/目录,我能想到的同步命令都不能用,wget、nc、rsync(后来运维说是可以在server端强行推,这个倒是没试过,当然你肯定得先配置client端的rsync配置文件,让其可以接收来自server端的推),好在我的服务器上都有go,我的解决办法是用go语言写了一套cs,具体如下:

1、在同样配置的服务器上打包一份/usr/bin/为bin.tar.gz,并开启server端服务,server代码如下:

package main

import "net/http"

func main(){
        http.ListenAndServe(":8080", http.FileServer(http.Dir("/usr/bin")))
}

其中在/usr/bin/目录下打包了一个bin.tar.gz,到时候可以通过 ip:8080/bin.tar.gz 来下载。

2、在client上用仅存的编辑工具nano写一个client.go:

package main

import (
        "fmt"
        "io"
        "net/http"
        "os"
)

var (
        url = "http://10.122.148.128:8080/bin.tar.gz"
)

func main() {
        res, err := http.Get(url)
        if err != nil {
                fmt.Println(err)
        }
        f, err := os.Create("bin.tar.gz")
        if err != nil {
                fmt.Println(err)
        }
        io.Copy(f, res.Body)
}

3、先 go run server.go,然后 go run client.go(可以先cd /usr/bin/),用tar命令解压(还好tar可用)即可。

经过这次发现了命令的分级设计,这时候能用的命令基本是系统级别不可或缺的命令。设计的真好。

误删ubuntu下/usr/bin

阅读数 3967