Explicando o sinalizador -W para rm

8

O que o -Wsinalizador rmfaz (no BSD ou no Mac OS X)?

De acordo com sua página de manual, o sinalizador tenta "recuperar os arquivos nomeados". E atualmente "esta opção pode ser usada apenas para recuperar arquivos cobertos por blecautes". O que é isso tudo e como posso usá-lo?

Whymarrh
fonte
Nem todas as versões do rmsuporte a -Wbandeira. Em particular, a versão GNU coreutils, usada pela maioria ou por todas as distribuições Linux, não. rm: invalid option -- 'W'
Keith Thompson
Eu deveria ter especificado que estava me referindo à versão BSD.
Whymarrh

Respostas:

16

O -Wsinalizador é uma opção que a maioria dos usuários BSD/OSXnunca precisará usar, pois se aplica apenas a " montagens de união ". Esse tipo de montagem simplesmente permite que vários sistemas de arquivos sejam montados, aparecendo como apenas um sistema de arquivos. Para explicar melhor, aqui está o resumo de um artigo, intitulado " Union Mounts in 4.4BSD-Lite ", dos autores Jan-Simon Pendry e Marshall Kirk McKusick:

Ao contrário de uma montagem tradicional que oculta o conteúdo do diretório em que está colocada, uma montagem em união apresenta uma visualização de uma fusão dos dois diretórios. Embora apenas o sistema de arquivos na parte superior da pilha da união possa ser modificado, o sistema de arquivos da união dá a aparência de permitir que qualquer coisa seja excluída ou modificada. Os arquivos na camada inferior podem ser excluídos com o branco na camada superior. Os arquivos a serem modificados são copiados automaticamente para a camada superior. Essa nova funcionalidade possibilita vários aplicativos novos, incluindo a capacidade de aplicar patches em um CD-ROM e eliminar links simbólicos gerados por um montador automático. Também é possível fornecer visualizações por usuário do sistema de arquivos, permitindo visualizações privadas de uma área de trabalho compartilhada,

Este documento também discute operações de whiteout:

Se um nome estiver sendo removido do espaço para nome da camada inferior, é criado um whiteout na camada superior. Um whiteout tem o efeito de mascarar o nome na camada inferior. As operações que causam a criação de um whiteout incluem desvincular, rmdir e renomear.

Juntando tudo, rmo -Wsinalizador usa o "whiteout" criado na camada superior para restaurar os arquivos "excluídos" da camada inferior. Para uso, consulte o manual .

Steve
fonte