Sou um novo aluno de doutorado e estou lidando com um problema sério. Tentei mapear um diretório do Servidor A (/home/lab/Desktop) para o Servidor B (/home/usr/labDesktop) porque o Servidor B tem melhor poder de computação. Enquanto trabalhava, todos os dados no diretório do Servidor A desapareceram.
Aqui está uma parte da sequência de comandos que executei e que podem ter causado o problema:
$ sudo sshfs lab@ipaddress:/home/lab/Desktop /home/usr/labDesktop
[sudo] password for usr:
The authenticity of host 'ipaddress (ipaddress)' can't be established.
XXX key fingerprint is XXX.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
lab@ipaddress's password:
$ ls
labDesktop examples.desktop
$ cd labDesktop
-sh: 44: cd: can't cd to labDesktop
$ ls
labDesktop examples.desktop
$ sudo sshfs lab@ipaddress:/home/lab/Desktop /home/usr/labDesktop
lab@ipaddress's password:
read: Interrupted system call
$ fusermount -u /home/usr/labDesktop
fusermount: entry for /home/usr/labDesktop not found in /etc/mtab
$ ls
labDesktop examples.desktop
$ cd labDesktop
-sh: 49: cd: can't cd to labDesktop
$ rm -r labDesktop
rm: cannot remove 'labDesktop': Permission denied
$ sudo rm -r labDesktop
rm: cannot remove 'labDesktop': Device or resource busy
$ mount | grep /home/usr/labDesktop
lab@ipaddress:/home/lab/Desktop on /home/usr/labDesktop type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
$ fusermount -u /home/usr/labDesktop
fusermount: entry for /home/usr/labDesktop not found in /etc/mtab
$ fusermount -uz /home/usr/labDesktop
fusermount: entry for /home/usr/labDesktop not found in /etc/mtab
$ sudo umount /home/usr/labDesktop
$ mount | grep /home/usr/labDesktop
$ rm -r /home/usr/labDesktop
$ ls
examples.desktop
Como você pode ver, "sudo rm -r" lançou uma mensagem de erro, "rm: cannot remove". Então eu não acredito que isso realmente apagou os dados. Além disso, eu tentei desmontar usando "fusermount -u" antes de executar "sudo rm -r". Se "fusermount -u" falhou com uma mensagem de erro, "sudo rm -r" não deveria ter falhado também com uma mensagem de erro?
- Essa sequência de comandos poderia ter causado a exclusão dos arquivos no Servidor A? Ou é provável que outra coisa tenha causado a perda de dados?
- Existe alguma maneira de recuperá-los?
Obrigado antecipadamente. Agradeço sinceramente sua ajuda.
Isso estabelece uma
sshfs
conexão: para o usuárioroot
no servidor B, o diretório/home/usr/labDesktop
permite acesso ao/home/lab/Desktop
diretório do servidor A com os direitos de acesso do usuáriolab
no servidor A.Especificamente, isso não significa que o usuário
lab
no servidor B teria qualquer acesso a/home/usr/labDesktop
.Então você não pode
cd
ir ao diretório como seu usuário regularlab
. Isso é o esperado.Tentar montá-lo novamente falha, provavelmente porque ele já está montado.
Mais especificamente, não há nenhuma entrada de montagem para
/home/usr/labDesktop
que o usuáriolab
possa desmontar , porque a montagem inicial foi feita pelo usuárioroot
, nãolab
. Então esse comando não faz nada.Como a montagem foi feita pelo usuário
root
, o usuáriolab
não tem acesso de gravaçãolabDesktop
algum. Isso é o esperado.Este comando diz: "Como usuário
root
, exclua tudo dentro do diretóriolabDesktop
, incluindo o próprio diretório." Esse é o erro.Como o diretório do servidor A é perfeitamente acessível para o usuário
root
por meio da montagem sshfs, o comando excluirá tudo dentro do diretório. Mas excluir o diretório em si falha, porque o diretório é, na verdade, um ponto de montagem. No entanto, essa mensagem de erro só aparece depois que todo o resto já foi excluído.Isso confirma que o diretório do servidor A ainda está montado e acessível
root
apenas a.)O usuário
lab
não tem permissão para desmontar algoroot
que ele mesmo montou.Ao usar
sudo
, você emite a solicitação de desmontagem como usuárioroot
e, portanto, ela será bem-sucedida.E após uma desmontagem bem-sucedida, você pode excluir o
labDesktop
diretório, porque agora ele é apenas um diretório vazio comum.(A
rmdir /home/usr/labDesktop
teria sido suficiente. Seria um bom hábito usarrmdir
sempre que você esperasse excluir um diretório vazio, pois não faria nada e produziria uma mensagem de erro se o diretório estivesse inesperadamente não vazio.)Definitivamente, uma vez que você executou o
rm -r
comando como o mesmo usuário que fez a montagem no servidor local B, e o usuário remoto especificado nosshfs
comando era presumivelmente o proprietário do diretório no servidor remoto A, então era esperado que ele tivesse acesso total.Com
sudo
, você tinha acesso total à montagem e, portanto, o servidor B fez exatamente o que você pediu e excluiu tudo o que pôde acessar dentro do ponto de montagem.A linha de comando
rm
não "moverá arquivos para a lixeira". É um comando para realmente excluir o(s) arquivo(s) especificado(s) imediatamente.Você tem bons backups desse diretório do servidor A?
Se não, e você quiser tentar recuperar arquivos deletados, então é importante parar de usar esse sistema de arquivos no servidor A imediatamente para que os blocos que costumavam conter os arquivos deletados não sejam substituídos por dados mais novos. O sistema de arquivos deve ser desmontado no servidor A, e então utilitários de recuperação de dados apropriados podem ser executados nele. Quaisquer arquivos recuperados devem ser salvos em algum outro sistema de arquivos: é importante que o sistema de arquivos com os dados perdidos não seja modificado mais até que nenhuma outra ação de recuperação seja necessária/valiosa.
Se o sistema de arquivos no servidor A estiver em um SSD, também é importante garantir que nenhuma otimização TRIM periódica seja executada em todo o SSD até que as operações de recuperação sejam concluídas. Se o sistema de arquivos for TRIMmed, todos os arquivos excluídos provavelmente serão irrevogavelmente perdidos.