Como destruir uma pasta?


18

Eu quero um comando para destruir completamente o conteúdo de uma pasta / diretório (que pode estar dentro de pastas / diretórios). Também, por favor, explique o comando.


Defina "fragmento". Se você apenas quer dizer o que o shredcomando faz, então há a sua resposta.
Psp #

Muito estreitamente relacionado: askubuntu.com/questions/57572/…
Takkat

@ psusi- by shred Quero dizer excluir arquivo além da recuperação. Eu estava usando o comando shred, mas como isso era aplicável apenas aos arquivos, eu queria um comando semelhante para excluir pastas e arquivos dentro dele.
Ashu

Qual deles faz o trabalho perfeitamente shredou secure-delete?
Ashu

11
Para outros usuários que tropeçam aqui, shred lembre-se de que isso não é tão eficaz quanto você pensa, porque os sistemas de arquivos e o hardware modernos não substituem os dados no local, mas registram as mudanças no diário ou movem-nas para o nível de desgaste. Relacionados: unix.stackexchange.com/questions/27027/...
Mike Ounsworth

Respostas:


27
  1. Instale o pacote secure-delete.
  2. Use o comando srm -r pathnamepara remover sua pasta e arquivos.

As configurações padrão são para 38 (!!!) passagens de substituições, o que é um exagero de exagero (veja mais informações sobre isso aqui ).

Para o meu uso, eu quero apenas uma única passagem de dados aleatórios, então eu o uso srm -rfll pathname.

Se você deseja criar uma opção de botão direito na GUI para arquivos e pastas, use o gnome-actions para chamar um script como este:

#!/bin/bash
if dialog=`zenity --window-icon=warning --question --title="Secure Delete" --no-wrap --text="Are you sure you want to securely delete:\n\n     $1\n\nand any other files and folders selected? File data will be overwritten and cannot be recovered."` 
then /usr/bin/srm -fllrv "$@"| zenity --progress --pulsate --text="File deletion in progress..." --title="Secure Delete" --auto-close
fi 

Se você quiser configurações mais paranóicas, modifique o script acima.


11
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). você poderia explicar essas duas coisas? 38 substituições é o padrão, como isso afeta o valor '38'. e por que lduas vezes em-rfll
Ashu 16/04/12

2
OK, todo o processo padrão é: 1 passagem com 0xff (limpeza zero), 5 passagens aleatórias com / dev / urandom são usadas para um RNG seguro, se disponível, 27 passagens com valores especiais definidos por Peter Gutmann, outras 5 passagens aleatórias de / dev / aleatório. Em seguida, renomeie o arquivo para um valor aleatório e trunque o arquivo. IIRC, / dev / random é considerado um melhor sistema de geração de números aleatórios. Usando -fll, pulamos as passagens 1 + 5 + 27 + 5 e as substituímos por uma única passagem de dados aleatórios, possivelmente de um gerador menos "verdadeiramente aleatório".
Veazer

@Ashu reduzido da página de manual (Debian Jessie) para srm; (frist) -l: only two passes, (second) -l: only one pass. Para outros, -f: fast (Non-secure random bits)e -r: recursive. Eu também sugiro -v: verbose. Eu também sugeriria executar isso em um screenexemplo, pode demorar um pouco em muitos dados.
21417 ThorSummoner

11
Eu substituí /usr/bin/srm -fllrvporbleachbit -s

8

Para arquivos, não diretórios, eis uma maneira mais simples, em vez de -exec shred -u {} \;tipo:

cd to your directory.

então

find . -type f -print0 | xargs -0 shred -fuzv -n 48

isso 48 passa recursivamente para o diretório atual em que você cdestá.

Espero que isso ajude alguns.


Adicionando '-print0' para encontrar e '-0' ao xargs? Os diretórios podem ter espaços em branco em seus nomes.
fraco

Boa resposta, mas por que você usa xargs ?? Eu não entendo xargs.
Chinmaya B

1

O Shred funciona apenas em arquivos. Você precisa destruir os arquivos nos diretórios / subdiretórios primeiro e depois remover os diretórios. experimentar

find [PATH_TO_DIR] 

e verifique se você vê apenas os arquivos que deseja excluir

find [PATH_TO_DIR] -exec shred -u {} \;

em seguida, remova os dirs com

rm -rf [PATH_TO_DIR]

você pode explicar {} \;? também em algum lugar elsi eu tinha visto o mesmo comando que o seu, mas era '{}' \;qual é a diferença entre os dois?
Ashu

Como o shred não funciona em diretórios, que tal adicionar a opção -type f aos comandos find?
Andol

@ Andol: Sim, eu estava pensando nisso ..
Ashu

11
Não posso explicar melhor do que a página de manual find .... the {} e \; fazem parte da opção -exec da localização.
precisa

1

Você provavelmente deseja usar algo semelhante a este:

find dir -type f -exec shred -fuz {} +
rm -rf dir

O primeiro comando localiza apenas os arquivos e os passa para o shred (o maior número possível de arquivos - não é necessário iniciar um novo processo de shred para todos os arquivos como \; Por fim, remova os diretórios também.


1

sudo apt install wipe

$ wipe -rfi dir/*

onde as bandeiras usadas: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process


0

Inseri o seguinte script bash para esse fim no meu .bashrc

function rm2 {

  for var in $@
  do
  if [ -d $var ]
  then
     nohup $( /usr/bin/find "$var" -type f -exec  shred -n 2 -u -z -x {} \;;/bin/rm -rf "$var" ) & 
  else
    nohup /usr/bin/shred -x -n 2 -u -z "$var" & 
  fi
done
exit
}

-1

Quando preciso fragmentar vários arquivos ou um diretório inteiro, simplesmente uso, shred -vzn 20 ./shredme/*.*por exemplo, que substitui todos os arquivos com qualquer extensão de arquivo na pasta "shredme". Em seguida, você pode usar o comando rm -rf ./shredme padrão para remover a própria pasta (ou apenas clicar com o botão direito do mouse e excluir a pasta), pois todos os dados foram substituídos 20 vezes neste exemplo.

Fiz um rápido exemplo disso com um monte de imagens duplicadas como exemplo.

Captura de tela do terminal

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.