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.

Ashu
fonte
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.

Veazer
fonte
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.

memorysticky
fonte
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]
Ruediger
fonte
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.

user1338062
fonte
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

cryptoboy
fonte
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
}
Peter Hornyak
fonte
-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

Linuxer
fonte