Diretório não recuperável em perdido + encontrado

10

Como posso excluir este diretório? Eu fsckencontrei e ele encontrou algum lixo, procurei esses arquivos e não havia nada importante. Então, eu tentei excluir o conteúdo de /lost+founde tudo se passou, exceto este diretório estranho. Eu pensei que colocá-lo em /tmp(eu posso mover esse diretório pelo volume) o apagará na próxima reinicialização, mas ele ainda estará lá após a reinicialização e outra fsck.

Como parece que o problema é de nível baixo e jogar com propriedade e permissões não é suficiente, eu consegui reproduzir o problema sozinho. Aproveitar!

  • Isso é seguro, você poderá desmontar a imagem para se livrar desses diretórios na sua máquina ;
  • Isso não é iso-imagem, é o resultado dedd if=/dev/sda1 of=/files/broken.iso ;

Fiz um arquivo de 15 MB com a imagem ~ 1,2 GB. Você pode fazer o download e jogar com os seguintes comandos:

cd /tmp
wget https://dl.dropboxusercontent.com/u/22701362/broken.tar.xz
tar xvf broken.tar.xz
mkdir test
sudo mount broken.iso test
cd test

Haveria dois diretórios (durante a criação dessa imagem, parece que existem dois diretórios no meu disco):

/tmp/test> tree
.
├── 1
│   └── plexus-component-annotations-1.5.5.jar.sha1 [error opening dir]
└── 2
    └── #1589030 [error opening dir]

4 directories, 0 files

Boa sorte com a remoção desses dois diretórios:

/tmp/test> sudo rm -rf *
rm: cannot remove '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
rm: cannot remove '2/#1589030': Operation not permitted

/tmp/test> sudo chown -R root:root *
chown: changing ownership of '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
chown: cannot read directory '2/#1589030': Permission denied

/tmp/test> sudo chmod -R 777 *
chmod: changing permissions of '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
chmod: changing permissions of '2/#1589030': Operation not permitted
chmod: cannot read directory '2/#1589030': Permission denied
Luto
fonte
Como está /tmpo mesmo volume? Você poderia postar a saída de df? Além disso, envie a saída sudo perl -MFile::Path -e 'rmtree("/tmp/foo") || die "$!"'para o caso de recebermos uma mensagem de erro mais informativa.
terdon
@terdon Adicionei a saída à pergunta. Você acha que a saída é um pouco útil?
Grief
1
Bem, a dfsaída nos mostra que o seu / tmp` é realmente um diretório normal /e não um tmpfs, que é a configuração padrão. Isso é surpreendente, mas explica por que você pode copiar o diretório /tmpe por que ele sobrevive às reinicializações. A perlsaída realmente não acrescenta muito, não, mas valeu a pena tentar. Estou agarrando canudos aqui.
terdon
offtopic: no Ubuntu /tmpé um diretório normal por padrão. Isso é feito para evitar preenchê-lo até 100% e economizar RAM. É limpo durante a inicialização. Esse comportamento existe há muito tempo.
Julgamento
Eu ia tentar arrancar a partir de um LiveCD, em seguida, bisbilhotando o sistema de arquivos.
Journeyman Geek

Respostas:

8

Uma possibilidade é a flag imutável no caso do sistema de arquivos ext. Veja a saída do lsattrcomando. Se houver i, ele pode ser removido comchattr -i filename

Um arquivo com o atributo 'i' não pode ser modificado: não pode ser excluído ou renomeado, nenhum link pode ser criado para esse arquivo e nenhum dado pode ser gravado no arquivo. Somente o superusuário ou um processo que possui o recurso CAP_LINUX_IMMUTABLE pode definir ou limpar esse atributo.

Nesse caso, há algo mais acontecendo

Isso parece funcionar,

> lsattr 1
-----a---------- 1/plexus-component-annotations-1.5.5.jar.sha1
> rmdir 1/plexus-component-annotations-1.5.5.jar.sha1
rmdir: failed to remove '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
> chattr -a 1/plexus-component-annotations-1.5.5.jar.sha1
> rmdir 1/plexus-component-annotations-1.5.5.jar.sha1

> lsattr 2
---D-ad--j--T--- 2/#1589030 
> chattr -D -a -d -j -T 2/\#1589030
> rmdir 2/\#1589030
JJ Hakala
fonte
Não. Você viu que eu usei sudo? Eu gostaria que você baixasse a imagem, monte-a e tente você mesmo.
Grief
Esta não é uma 'imagem iso' da qual é resultado #dd if=/dev/sda1 of=broken.iso
Grief
Sim, você provavelmente está certo, desculpe! Você teve a chance de reproduzir o problema?
Grief
1
Sim, e parece realmente estranho.
JJ Hakala
Sinto-me muuuito estúpido agora :( Mas você é o meu herói do dia, Sr. JJ Hakala
Grief
1

tente se tornar o usuário que o possui para excluí-lo

sudo -u 6666 -g 19312 rm -rf ./#1589030
Amias
fonte
sudo -u '#6666' -g '#19311' rm -rf \#1589030 rm: cannot remove '#1589030': Permission denied sudo -u '#6666' -g '#19311' chmod 777 \#1589030 chmod: cannot access '#1589030': Permission denied
Luto
Você precisa fazer do usuário se ele não existe
Amias
a criação de usuários e grupos com estes UID e GID não ajuda
Grief