我想通过以下方式移动该目录:
sudo mv /usr/lib /tmp/bad_files/
sudo mkdir /usr/lib
sudo mv /tmp/bad_files/lib/* /usr/lib/
我为什么要这样做?
我遇到与文件系统相关的问题并且无法使用fsck
修复它们(http://talk.radxa.com/topic/949/how-to-fsck-nand对于那些认为这很奇怪的人)所以我想欺骗 FS 将我无法使用的所有文件移动到某个转储目录中(远离它们造成损坏的地方,因为它们不可读)。
我尝试过,但我无法仅移动有问题的单个文件
/usr/lib → sudo mv ./libpostfix-tls.so.1 /tmp/bad_files/
mv: cannot stat ‘./libpostfix-tls.so.1’: Input/output error
我将使用apt-get install -- reinstall
原始包重新安装有问题的文件。
我为什么不直接做呢
如果我做
sudo strace mv ./libpostfix-tls.so.1 /tmp/bad_files/
我看到 mv 命令本身使用,/usr/lib
所以我担心我可能会通过这样做杀死我的操作系统
...
open("/usr/lib/locale/C.UTF-8/LC_COLLATE", O_RDONLY|O_CLOEXEC) = 3
...
所以我的问题:我可以安全地移动这个文件夹吗?操作系统和设备信息:
Distributor ID: Linaro
Description: Linaro 14.04
Release: 14.04
Codename: trusty
/dev/mtdblock1 on / type ext4 (rw)
答案1
如果您无法关闭系统进行维护,那么在使用系统文件时实际移动它们(如果可能的话)是一项非常艰巨的任务。如果可以把系统停机维护,我可以想到两种方法:
启动救援系统
您将需要从另一个系统启动,可能是救援磁盘或类似 gparted 的东西,然后安装您的根分区并按照您的建议移动 /usr。这是我能看到的最安全的方法,这样您就不会在原始系统实际运行时移动其自己的文件来干扰它。
同一系统:单用户模式+LD_LIBRARY_PATH
如果您出于某种原因没有任何其他系统可以启动,我认为您仍然可以通过以下方式在同一系统上进行启动:
重新启动系统进入单用户模式(大多数 Linux 发行版上的运行级别 1)
复制/usr/lib/* 某个安全的地方,比如
cp /usr/lib/* /tmp/tmplib/
设置 LD_LIBRARY_PATH 指向它:假设你有一个 bash shell,你将使用
export LD_LIBRARY_PATH=/tmp/tmplib
按照您尝试的方式移动文件。
免责声明:我没有机会在实时系统上进行尝试,因此请持保留态度,并始终确保您有所有文件的备份。