모든 것을 손상시키지 않고 /usr/lib를 이동하십시오.

모든 것을 손상시키지 않고 /usr/lib를 이동하십시오.

다음을 통해 이 디렉터리를 이동하고 싶습니다.

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이렇게 하면 OS가 종료될까 걱정됩니다.

...
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

어떤 이유로 부팅할 다른 시스템이 없는 경우에도 다음을 통해 동일한 시스템에서 부팅할 수 있습니다.

  1. 들어가려면 시스템을 다시 시작하세요.단일 사용자모드(대부분의 Linux 배포판에서는 실행 수준 1)

  2. 복사/usr/lib/* 다음과 같은 안전한 곳cp /usr/lib/* /tmp/tmplib/

  3. 이를 가리키도록 LD_LIBRARY_PATH를 설정합니다. bash 쉘이 있다고 가정하면 다음을 사용합니다.export LD_LIBRARY_PATH=/tmp/tmplib

  4. 시도한 방식으로 파일을 이동하십시오.

부인 성명: 라이브 시스템에서 이 작업을 시도할 기회가 없었으므로 이를 감안하고 항상 모든 파일을 백업해 두십시오.

관련 정보