Os arquivos podem ser recuperados após um comando mv com falha?

1

Eu usei mv * .. no Unix para mover todo o conteúdo de um diretório para sua pasta pai. Havia uma pasta chamada "Downloads" no diretório atual e no pai. O dos pais estava vazio para começar.

Depois de executar este comando, voltei a um prompt de comando, mas o shell estava congelado e tive que iniciar uma nova sessão SSH. Agora, a pasta Downloads no diretório pai ainda está vazia e a pasta Downloads que eu estava tentando mover não existe mais.

Existe uma maneira de descobrir onde esses arquivos estão, ou neste momento é um programa de recuperação de dados necessário para encontrar os arquivos, já que nada está apontando para eles no sistema de arquivos mais?

    
por noktulo 04.06.2014 / 18:42

2 respostas

3

Você pode querer executar uma verificação de sistema de arquivos no caso de alguns nós desaparecerem:

fsck -fyv /dev/sdaX

Você deve alterar sdaX para sua partição real. Mas, até onde eu sei, se um arquivo for removido, ele se foi para sempre. É por isso que sempre corro cp e quando vejo que tudo está bem, corro rm . Você também pode tentar com ferramentas de recuperação de dados, mas não é 100% garantido que você recupere tudo. Quando você estiver em branco, nunca mais voltará .

    
por 04.06.2014 / 19:04
1

Você precisa ter cuidado com mv e cp : eles são implacáveis e você pode facilmente perder arquivos, por exemplo: -

mv * ..    ; # moves from current directory to parent, overwriting duplicates

Eu recomendo sempre usar -n ou -i para evitar substituições. Eu também sugiro -v para listar o que foi feito. Uma vez eu digitei errado (peguei a tecla #, ao lado para retornar no teclado): -

mv * other/#

Isso moveu o primeiro arquivo para 'other / #', depois substituiu o mesmo '#' por todos os outros arquivos, deixando-me com apenas '#', contendo o último arquivo movido! Eu não fiz isso de novo.

Porque eu também uso o TCC no Windows que eu digitei, sem pensar esperando mover para arquivos de mesmo nome no diretório de destino: -

mv -iv * other/*    ; # In TCC, MOVE * other\* would do what I wanted

Isso normalmente falha, a menos que o último nome expandido no destino seja um diretório, em cujo caso todos os arquivos no diretório atual e todos os outros arquivos no destino são movidos para ele.

Quanto ao que aconteceu com seus arquivos: se você conhece algum nome, use find no diretório pai para ver se os moveu para algum lugar inesperado. Se isso não funcionar, tente o pai dos pais. Você pode se surpreender de onde eles acabaram.

Se você não confiar em si mesmo para lembrar as opções, adicione o seguinte comando (ou similar) a ~ / .bashrc ou ~ / .bash_aliases : -

alias mv="'which mv' -iv"
    
por 04.06.2014 / 21:24