¿Cómo triturar una carpeta?


18

Quiero un comando para destruir completamente el contenido de una carpeta / directorio (que puede estar dentro de carpetas / directorios). También explique el comando.


Definir "triturar". Si solo quiere decir lo que hace el shredcomando, entonces ahí está su respuesta.
psusi


@ psusi- por shred me refiero a eliminar el archivo más allá de la recuperación. Estaba usando el comando shred, pero como era aplicable solo a archivos, quería un comando similar para eliminar carpetas y archivos dentro de él.
Ashu

¿Cuál hace el trabajo perfectamente shredo secure-delete?
Ashu

1
Para otros usuarios que tropiezan aquí, tenga en shred cuenta que no es tan efectivo como cree porque los sistemas de archivos y hardware modernos no sobrescriben los datos en su lugar, sino que registran los cambios o los mueven para nivelar el desgaste. Relacionado: unix.stackexchange.com/questions/27027/…
Mike Ounsworth el

Respuestas:


27
  1. Instala el paquete secure-delete.
  2. Use el comando srm -r pathnamepara eliminar su carpeta y archivos.

La configuración predeterminada es para 38 (!!!) pases de sobrescritura, lo cual es extremadamente exagerado en mi humilde opinión (vea más información sobre esto aquí ).

Para mi uso, solo quiero un solo pase de datos aleatorios, así que lo uso srm -rfll pathname.

Si desea crear una opción de clic derecho en la GUI para archivos y carpetas, use gnome-actions para llamar a un 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 

Si desea más configuraciones paranoicas, asegúrese de modificar el script anterior.


1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). ¿podría explicar estas dos cosas? 38 sobrescribe por defecto cómo afectan al valor '38'. y por qué ldos veces en-rfll
Ashu

2
OK, todo el proceso predeterminado es: 1 pase con 0xff (un borrado cero), 5 pases aleatorios con / dev / urandom se utilizan para un RNG seguro si está disponible, 27 pases con valores especiales definidos por Peter Gutmann, otros 5 pases aleatorios de / dev / random. Luego cambie el nombre del archivo a un valor aleatorio y trunca el archivo. IIRC, / dev / random se considera un mejor sistema de generación de números aleatorios. Usando -fll omitimos los pases 1 + 5 + 27 + 5 y los sustituimos con un solo pase de datos aleatorios, posiblemente de un generador menos "verdaderamente aleatorio".
Veazer

@Ashu acortado de la página de manual (Debian Jessie) para srm; (frist) -l: only two passes, (second) -l: only one pass. Para otros, -f: fast (Non-secure random bits)y -r: recursive. También lo recomiendo mucho -v: verbose. También sugeriría ejecutar esto en una screeninstancia, puede llevar bastante tiempo en muchos datos.
ThorSummoner

1
He reemplazado /usr/bin/srm -fllrvconbleachbit -s

8

Para archivos, no directorios, aquí hay una forma más simple en lugar de -exec shred -u {} \;tipo:

cd to your directory.

luego

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

esto hace 48 pases recursivamente al directorio actual en el que cdha editado.

Espero que esto ayude un poco.


¿Agregar '-print0' para buscar y '-0' para xargs? Los directorios pueden tener espacios en blanco en sus nombres.
débil

Buena respuesta, pero ¿por qué usas xargs? No entiendo xargs.
Chinmaya B

1

Triturar solo funciona en archivos. Primero debe destruir los archivos en el directorio / subdirectorio y luego eliminar los directorios. tratar

find [PATH_TO_DIR] 

y asegúrese de ver solo los archivos que desea eliminar

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

luego quite los directorios con

rm -rf [PATH_TO_DIR]

¿Puedes explicarme {} \;? También en algún lugar, elsi, había visto el mismo comando que tu, pero ¿cuál era '{}' \;la diferencia entre los dos?
Ashu

Dado que shred no funciona en directorios, ¿qué tal si agrega la opción -type f a los comandos de búsqueda?
andol

@ andol: sí, estaba pensando en eso ..
Ashu

1
No puedo explicarlo mejor que la página del manual de búsqueda ... el {} y \; son parte de la opción -exec de find.
Ruediger

1

Probablemente quieras usar algo similar a esto:

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

El primer comando encuentra solo archivos y los pasa a triturar (tantos como sea posible, no es necesario iniciar un nuevo proceso de trituración para cada archivo como \; does). Finalmente, elimine los directorios también.


1

sudo apt install wipe

$ wipe -rfi dir/*

donde se usaban las banderas: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process


0

He insertado el siguiente script bash para este propósito en mi .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

Cuando necesito triturar varios archivos o un directorio completo, simplemente uso, shred -vzn 20 ./shredme/*.*por ejemplo, que sobrescribe todos los archivos con cualquier extensión de archivo en la carpeta "shredme". Luego puede usar el comando estándar rm -rf ./shredme para eliminar la carpeta en sí (o simplemente hacer clic derecho y eliminar la carpeta) ya que todos los datos se han sobrescrito 20 veces para este ejemplo.

Hice un ejemplo rápido de esto con un montón de imágenes duplicadas como ejemplo.

Captura de pantalla del terminal

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.