AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 788794
Accepted
Andy Junghyun Kim
Andy Junghyun Kim
Asked: 2024-12-28 20:58:08 +0800 CST2024-12-28 20:58:08 +0800 CST 2024-12-28 20:58:08 +0800 CST

Eu deletei arquivos acidentalmente? Como posso recuperá-los?

  • 772

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?

  1. 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?
  2. Existe alguma maneira de recuperá-los?

Obrigado antecipadamente. Agradeço sinceramente sua ajuda.

data-recovery
  • 1 1 respostas
  • 327 Views

1 respostas

  • Voted
  1. Best Answer
    telcoM
    2024-12-28T22:34:41+08:002024-12-28T22:34:41+08:00
    $ 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:
    

    Isso estabelece uma sshfsconexão: para o usuário rootno servidor B, o diretório /home/usr/labDesktoppermite acesso ao /home/lab/Desktopdiretório do servidor A com os direitos de acesso do usuário labno servidor A.

    Especificamente, isso não significa que o usuário labno servidor B teria qualquer acesso a /home/usr/labDesktop.

    $ cd labDesktop
    -sh: 44: cd: can't cd to labDesktop
    

    Então você não pode cdir ao diretório como seu usuário regular lab. Isso é o esperado.

    $ sudo sshfs lab@ipaddress:/home/lab/Desktop /home/usr/labDesktop
    lab@ipaddress's password:
    read: Interrupted system call
    

    Tentar montá-lo novamente falha, provavelmente porque ele já está montado.

    $ fusermount -u /home/usr/labDesktop
    fusermount: entry for /home/usr/labDesktop not found in /etc/mtab
    

    Mais especificamente, não há nenhuma entrada de montagem para /home/usr/labDesktop que o usuário labpossa desmontar , porque a montagem inicial foi feita pelo usuário root, não lab. Então esse comando não faz nada.

    $ rm -r labDesktop
    rm: cannot remove 'labDesktop': Permission denied
    

    Como a montagem foi feita pelo usuário root, o usuário labnão tem acesso de gravação labDesktopalgum. Isso é o esperado.

    $ sudo rm -r labDesktop                          
    rm: cannot remove 'labDesktop': Device or resource busy
    

    Este comando diz: "Como usuário root, exclua tudo dentro do diretório labDesktop, incluindo o próprio diretório." Esse é o erro.

    Como o diretório do servidor A é perfeitamente acessível para o usuário rootpor 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.

    $ 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)
    

    Isso confirma que o diretório do servidor A ainda está montado e acessível rootapenas a.)

    $ 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
    

    O usuário labnão tem permissão para desmontar algo rootque ele mesmo montou.

    $ sudo umount /home/usr/labDesktop
    

    Ao usar sudo, você emite a solicitação de desmontagem como usuário roote, portanto, ela será bem-sucedida.

    $ rm -r /home/usr/labDesktop
    

    E após uma desmontagem bem-sucedida, você pode excluir o labDesktopdiretório, porque agora ele é apenas um diretório vazio comum.

    (A rmdir /home/usr/labDesktopteria sido suficiente. Seria um bom hábito usar rmdirsempre 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.)

    1. Essa sequência de comandos poderia ter causado a exclusão dos arquivos no Servidor A?

    Definitivamente, uma vez que você executou o rm -rcomando como o mesmo usuário que fez a montagem no servidor local B, e o usuário remoto especificado no sshfscomando 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.

    1. Existe alguma maneira de recuperá-los?

    A linha de comando rmnã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.

    • 14

relate perguntas

  • Moveu um diretório para um local inexistente?

  • MDADM - Recuperação de desastre ou passar do estado em que coloquei minha matriz RAID5

  • Como recuperar/copiar dados de discos que já fizeram parte de um RAID1 (LVM em MD) em um NAS de 2 discos?

  • script para mover arquivos mantidos excluídos com fdupes ou outro pacote de desduplicação

  • Qual é a diferença entre dd_rescue e ddrescue, quando preferir qual?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve