誤刪tree命令如何恢復

誤刪tree命令如何恢復

考察rpm,yum的用法nginx

1、刪除tree命令,tree命令不可用

[root@centos7 ~]# which tree
/usr/bin/tree
[root@centos7 ~]# rm -f /usr/bin/tree 
[root@centos7 ~]# tree .
bash: tree: command not found...

2、直接yum或rpm安裝將提示tree已經安裝

[root@centos7 ~]# yum install tree
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.bit.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
base                                                                         | 3.6 kB  00:00:00     
extras                                                                       | 3.4 kB  00:00:00     
nginx                                                                        | 2.9 kB  00:00:00     
updates                                                                      | 3.4 kB  00:00:00     
Package tree-1.6.0-10.el7.x86_64 already installed and latest version
Nothing to do
[root@centos7 ~]# rpm -ivh /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
    package tree-1.6.0-10.el7.x86_64 is already installed

3、解決辦法:強制覆蓋安裝

[root@centos7 ~]# rpm --help
--replacepkgs                    reinstall if the package is already present
[root@centos7 ~]# rpm -ivh /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm --replacepkgs
Preparing...                          ################################# [100%]
Updating / installing...
   1:tree-1.6.0-10.el7                ################################# [100%]

4、此時的tree已經能夠使用

[root@centos7 ~]# tree . -d
.
├── Desktop
├── Documents
├── Downloads
├── Music
├── Pictures
├── Public
├── scripts
├── Templates
└── Videos

9 directories

5、yum的話能夠從新安裝

[root@centos7 ~]# yum --help
reinstall      reinstall a package
[root@centos7 ~]# rm -f /usr/bin/tree 
[root@centos7 ~]# tree -d .
-bash: /usr/bin/tree: No such file or directory
[root@centos7 ~]# yum reinstall tree -y
[root@centos7 ~]# tree -d .
.
├── Desktop
├── Documents
├── Downloads
├── Music
├── Pictures
├── Public
├── scripts
├── Templates
└── Videos

9 directories

6、若是知道本身缺的文件,能夠只修復指定文件

使用rmp2cpio將tree的rpm包轉成cpiocentos

再使用cpio提取相關文件bash

缺陷:僅僅是複製過去了,有可能屬性都不對,複雜的包也不適用,最好不採用此法ide

# cpio -tv表示只是查看下包裏面的文件
[root@centos7 ~]# rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm | cpio -tv
-rwxr-xr-x   1 root     root        62768 Jun 10  2014 ./usr/bin/tree
drwxr-xr-x   2 root     root            0 Jun 10  2014 ./usr/share/doc/tree-1.6.0
-rw-r--r--   1 root     root        18009 Aug 13  2004 ./usr/share/doc/tree-1.6.0/LICENSE
-rw-r--r--   1 root     root         4628 Jun 24  2011 ./usr/share/doc/tree-1.6.0/README
-rw-r--r--   1 root     root         4100 Jun 24  2011 ./usr/share/man/man1/tree.1.gz
# 使用cpio -idv將/usr/bin/tree拿出來
[root@centos7 ~]# rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm | cpio -idv ./usr/bin/tree./usr/bin/tree
177 blocks
[root@centos7 ~]# ls usr/bin/ -l
total 64
-rwxr-xr-x 1 root root 62768 Aug  3 09:29 tree
# 而後將文件複製到原來的位置
[root@centos7 ~]# cp usr/bin/tree /usr/bin/tree 
cp: overwrite ‘/usr/bin/tree’? y
# 照樣能夠使用
[root@centos7 ~]# tree . -d
.
├── Desktop
├── Documents
├── Downloads
├── Music
├── Pictures
├── Public
├── scripts
├── Templates
├── usr
│   └── bin
└── Videos

11 directories
相關文章
相關標籤/搜索