Mover / usr / lib sem quebrar tudo

2

Eu quero mover este diretório da seguinte maneira:

sudo mv /usr/lib /tmp/bad_files/
sudo mkdir /usr/lib
sudo mv /tmp/bad_files/lib/* /usr/lib/

Por que eu quero fazer isso?

Eu tenho problemas relacionados ao sistema de arquivos e não consigo usar fsck para corrigi-los ( link para pessoas que pensam que é estranho), então eu quero enganar o FS para mover todos os arquivos que eu não posso utilizar em algum diretório de despejo (longe do lugar onde eles estão causando danos porque eles não são legíveis).

Eu tentei, não consigo mover apenas esse arquivo único Eu tenho problemas com

/usr/lib → sudo mv ./libpostfix-tls.so.1 /tmp/bad_files/
mv: cannot stat ‘./libpostfix-tls.so.1’: Input/output error

Eu usarei apt-get install -- reinstall para reinstalar os arquivos problemáticos do pacote original.

Por que não faço isso

se eu fizer

sudo strace mv ./libpostfix-tls.so.1 /tmp/bad_files/

Eu vejo que o próprio comando mv utiliza /usr/lib , então tenho medo de poder matar meu sistema operacional fazendo isso

...
open("/usr/lib/locale/C.UTF-8/LC_COLLATE", O_RDONLY|O_CLOEXEC) = 3
...

então minha pergunta: posso mover essa pasta com segurança ou não? Informações do sistema operacional e do dispositivo:

Distributor ID: Linaro
Description:    Linaro 14.04
Release:        14.04
Codename:       trusty
/dev/mtdblock1 on / type ext4 (rw)
    
por Milan Aleksić 19.04.2015 / 14:46

1 resposta

4

Se você não pode baixar o sistema para manutenção, é uma tarefa muito difícil mover os arquivos do sistema enquanto eles estão sendo usados (se possível). Se você puder levar o sistema para manutenção, posso pensar em duas maneiras:

Inicializando um sistema de resgate

Você precisará inicializar a partir de outro sistema, talvez um disco de recuperação ou algo como gparted, então monte sua partição root e mova / usr como sugeriu. Esta é a maneira mais segura que posso ver para que você não perturbe seu sistema original movendo seus próprios arquivos enquanto estiver sendo executado.

Mesmo sistema: modo de usuário único + LD_LIBRARY_PATH

Se você não tem nenhum outro sistema para inicializar por qualquer motivo, eu acho que você ainda pode fazer isso no mesmo sistema da seguinte maneira:

  1. Reinicialize seu sistema no modo usuário único (nível de execução 1 na maioria dos linux distros)

  2. Copiar / usr / lib / * em algum lugar seguro, digamos cp /usr/lib/* /tmp/tmplib/

  3. Defina LD_LIBRARY_PATH para apontar para ele: supondo que você tenha um shell bash, você usará export LD_LIBRARY_PATH=/tmp/tmplib

  4. Mova os arquivos como você está tentando fazer.

ISENÇÃO DE RESPONSABILIDADE : Eu não tenho a chance de experimentar isso em um sistema ao vivo, por isso leve isso em conta e sempre garanta que você tenha um backup de todos os seus arquivos.

    
por 19.04.2015 / 18:43