Comment déchiqueter un dossier?

18

Je veux qu'une commande déchiquette complètement le contenu d'un dossier / répertoire (qui peut être à l'intérieur de dossiers / répertoires). Veuillez également expliquer la commande.

Ashu
la source
Définissez "déchiqueter". Si vous voulez juste dire ce que fait la shredcommande, alors il y a votre réponse.
psusi
Très étroitement liés: askubuntu.com/questions/57572/…
Takkat
@ psusi- par shred, je veux dire supprimer le fichier au-delà de la récupération. j'utilisais la commande shred mais comme cela n'était applicable qu'aux fichiers, je voulais une commande similaire pour supprimer les dossiers et les fichiers qu'elle contient.
Ashu
Lequel fait le travail parfaitement shredou secure-delete?
Ashu
1
Pour les autres utilisateurs qui trébuchent ici, méfiez-vous que ce shred n'est pas aussi efficace que vous le pensez, car les systèmes de fichiers et le matériel modernes n'écrasent pas les données en place, mais enregistrent plutôt les modifications ou les déplacent pour un nivellement d'usure. Connexe: unix.stackexchange.com/questions/27027/…
Mike Ounsworth

Réponses:

27
  1. Installez le package secure-delete.
  2. Utilisez la commande srm -r pathnamepour supprimer votre dossier et vos fichiers.

Les paramètres par défaut sont pour 38 (!!!) passages d'écrasements, ce qui est extrêmement exagéré à mon humble avis (voir plus d'informations à ce sujet ici ).

Pour mon utilisation, je ne veux qu'un seul passage de données aléatoires, donc j'utilise srm -rfll pathname.

Si vous souhaitez créer une option de clic droit dans l'interface graphique pour les fichiers et les dossiers, utilisez gnome-actions pour appeler un script comme celui-ci:

#!/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 vous voulez plus de paramètres paranoïaques, assurez-vous de modifier le script ci-dessus.

Veazer
la source
1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). pourriez-vous expliquer ces deux choses. 38 remplacements est la valeur par défaut de la façon dont ceux-ci affectent la valeur «38». et pourquoi ldeux fois-rfll
Ashu
2
OK, tout le processus par défaut est: 1 passe avec 0xff (un effacement à zéro), 5 passes aléatoires avec / dev / urandom sont utilisées pour un RNG sécurisé si disponible, 27 passes avec des valeurs spéciales définies par Peter Gutmann, 5 autres passes aléatoires de / dev / random. Renommez ensuite le fichier en une valeur aléatoire et tronquez le fichier. IIRC, / dev / random est considéré comme un meilleur système de génération de nombres aléatoires. En utilisant -fll, nous sautons les passes 1 + 5 + 27 + 5 et les remplaçons par une seule passe de données aléatoires, éventuellement à partir d'un générateur moins «vraiment aléatoire».
Veazer
@Ashu abrégé de la page de manuel (Debian Jessie) pour srm; (frist) -l: only two passes, (second) -l: only one pass. Pour les autres, -f: fast (Non-secure random bits)et -r: recursive. Je suggère également fortement -v: verbose. Je suggérerais également d'exécuter cela dans une screeninstance, cela peut prendre un certain temps sur beaucoup de données.
ThorSummoner
1
J'ai remplacé /usr/bin/srm -fllrvparbleachbit -s
8

Pour les fichiers et non les répertoires, voici un moyen plus simple au lieu du -exec shred -u {} \;type de chemin:

cd to your directory.

ensuite

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

cela fait 48 passes récursivement dans le répertoire courant dans lequel vous avez cdédité.

J'espère que cela aide certains.

memorysticky
la source
Ajouter '-print0' pour trouver et '-0' pour xargs? Les répertoires peuvent avoir des espaces dans leurs noms.
faible
Bonne réponse mais pourquoi utilisez-vous des xargs ?? Je ne comprends pas les xargs.
Chinmaya B
1

Shred ne fonctionne que sur les fichiers. Vous devez d'abord détruire les fichiers dans le répertoire / sous-répertoires, puis supprimer les répertoires. essayer

find [PATH_TO_DIR] 

et assurez-vous de ne voir que les fichiers que vous souhaitez supprimer

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

puis supprimez les dirs avec

rm -rf [PATH_TO_DIR]
Ruediger
la source
pouvez-vous expliquer {} \;. aussi quelque part elsi j'avais vu la même commande que la vôtre mais c'était '{}' \;la différence entre les deux ??
Ashu
Puisque shred ne fonctionne pas sur les répertoires, que diriez-vous d'ajouter l'option -type f aux commandes find?
andol
@ andol: ouais je pensais à ça ..
Ashu
1
Je ne peux pas l'expliquer mieux que la page de manuel find .... les {} et \; font partie de l'option -exec de la recherche.
Ruediger
1

Vous voudrez probablement utiliser quelque chose de similaire à ceci:

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

La première commande ne trouve que les fichiers et les transmet à shred (autant de fois que possible - pas besoin de démarrer un nouveau processus de shred pour chaque fichier comme \; le fait). Enfin, supprimez également les répertoires.

user1338062
la source
1

sudo apt install wipe

$ wipe -rfi dir/*

où les drapeaux utilisés: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process

cryptoboy
la source
0

J'ai inséré le script bash suivant à cet effet dans mon .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
la source
-1

Lorsque j'ai besoin de déchiqueter plusieurs fichiers ou un répertoire entier, j'utilise simplement shred -vzn 20 ./shredme/*.*par exemple, qui écrase tous les fichiers avec n'importe quelle extension de fichier dans le dossier "shredme". Ensuite, vous pouvez utiliser la commande standard rm -rf ./shredme pour supprimer le dossier lui-même (ou simplement cliquer avec le bouton droit et supprimer le dossier) car toutes les données ont été écrasées 20 fois pour cet exemple.

J'ai fait un exemple rapide de cela avec un tas d'images en double comme exemple.

Capture d'écran du terminal

Linuxer
la source