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 / 792894
Accepted
Jeroen Baert
Jeroen Baert
Asked: 2025-03-24 14:25:47 +0800 CST2025-03-24 14:25:47 +0800 CST 2025-03-24 14:25:47 +0800 CST

Removendo /dev/fd do backup

  • 772

Eu acidentalmente sincronizei tudo novamente (com o link simbólico em seguida) /para outro disco.

Eu estava executando o rsync como um usuário comum.

Percebendo meu erro, eu quis limpar o backup. Ele apagou todos os arquivos, exceto os arquivos (com backup) emBACKUPFOLDER/dev/fd

Já era tarde e eu estava impaciente, então sudo rm -rf *entrei no BACKUPFOLDER e me livrei deles.

Agora fiquei pensando: por que não consegui excluir esses backups do descritor de arquivo (eles tinham meu nome de usuário como proprietário) e danifiquei alguma coisa ao executar sudo rm -rfesse backup?

rsync
  • 1 1 respostas
  • 180 Views

1 respostas

  • Voted
  1. Best Answer
    Stéphane Chazelas
    2025-03-24T14:34:08+08:002025-03-24T14:34:08+08:00
    $ namei -l /dev/fd
    f: /dev/fd
    drwxr-xr-x root     root     /
    drwxr-xr-x root     root     dev
    lrwxrwxrwx root     root     fd -> /proc/self/fd
    drwxr-xr-x root     root       /
    dr-xr-xr-x root     root       proc
    lrwxrwxrwx root     root       self -> 4701
    dr-xr-xr-x chazelas chazelas     4701
    dr-x------ chazelas chazelas   fd
    

    Em sistemas operacionais baseados em Linux, /dev/fdé um link simbólico para /proc/self/fd, /proc/selfum link simbólico para /proc/$pid, $pidsendo o id do processo que está fazendo isso readlink()nele, e /proc/$pid/fdé um diretório virtual somente leitura cujas permissões fazem com que ninguém tenha permissão de gravação nele.

    Então, se você rsynccopiou /dev/fdcomo uma cópia /proc/$pid/fd(em vez de uma cópia do link simbólico) preservando as permissões nele, você acabou com um dr-x------ your-user your-groupdiretório e rmnão pode excluir arquivos dentro dele, pois não tem permissão para modificar o diretório.

    Como você é o proprietário do diretório, você deve conseguir alterar essas permissões ou, de forma mais geral, fazer chmod -R u+rwx BACKUPFOLDERum backup como você mesmo, o que rm -rfgarantirá o sucesso.

    Em qualquer caso, sudo rm -rf BACKUPFOLDERou sudo rm -rf BACKUPFOLDER/dev(como sudo rm -rf BACKUPFOLDER/*teria expandido para) ou sudo rm -rf BACKUPFOLDER/dev/fdnão poderia ter causado nenhum dano ao resto do SO. Mesmo se rsynctivesse feito links simbólicos para arquivos ou diretórios no sistema lá, rmteria removido os links simbólicos lá e não seguido os links simbólicos para diretórios para remover arquivos dentro. E em qualquer caso, nem rootpoderia ter removido /proc/$pid/fd/$narquivos, pois esses são arquivos virtuais expondo informações internas do kernel Linux que o kernel não deixará você remover.

    O /dev/fdsymlink pode ser removido como nas versões atuais de sistemas baseados em Linux, /devnão é um sistema de arquivos virtual como poderia ser em versões mais antigas do Linux, mas algo preenchido automaticamente por programas de espaço do usuário (udev/systemd) com base em informações fornecidas pelo kernel, mas novamente rm -rf BACKUPFOLDER/dev/fdsó poderia remover o /dev/fdsymlink se BACKUPFOLDER/devfosse um symlink para /dev(ou BACKUPFOLDERum symlink para /ou para um diretório que contivesse um devsymlink para /dev) o que não tem razão para estar aqui.

    Algumas notas sobre seu sudo rm -rf *pensamento:

    • *é expandido (pelo shell, não rm) para a lista de arquivos não ocultos ali, então ele não teria deletado os ocultos. Se estiver usando zsh, você pode usar *(D)em vez de *para também remover os ocultos.

    • Se houver arquivos ou diretórios lá cujos nomes começam com -, a expansão de *poderia incluir argumentos que seriam tratados como opções por rm. Geralmente, ao usar globs ou pelo menos globs cuja expansão não é garantida para não ter elementos começando com -(ou +para alguns comandos), você quer usar o --delimitador de opção:

      sudo rm -rf -- *
      

      Embora você também possa fazer:

      sudo rm -rf ./*
      

    O melhor seria fazer isso sudo rm -rf BACKUPFOLDERaqui, o que evitaria ambos os problemas.

    • 2

relate perguntas

  • rsync - movendo todos os arquivos JPG/jpg de um disco rígido para um único diretório com um script de shell

  • diretório tar para enviar apenas blocos modificados de arquivos

  • Como faço uma duplicata de uma árvore de diretórios com links simbólicos duplicados relativamente?

  • Problemas de exclusão de Rsync

  • rsync porta 22 e 873 uso

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