如何切碎文件夹?


18

我希望命令完全切碎文件夹/目录(可能在文件夹/目录内)的内容。另外请解释该命令。


定义“切细”。如果您只是想知道shred命令的作用,那么您就会找到答案。
psusi 2012年


@ psusi-切细意味着删除文件后无法恢复。我使用了shred命令,但由于该命令仅适用于文件,因此我希望使用类似的命令删除其中的文件夹和文件。
阿舒(Ashu)2012年

哪一个做这项工作完全shredsecure-delete
阿舒(Ashu)2012年

1
对于在这里绊倒的其他用户,要当心它shred 并没有您想像的那样有效,因为现代文件系统和硬件不会覆盖适当的数据,而是记录更改或将其移动以进行损耗平衡。相关:unix.stackexchange.com/questions/27027/...
麦克Ounsworth

Answers:


27
  1. 安装软件包secure-delete
  2. 使用命令srm -r pathname删除文件夹和文件。

默认设置是用于覆盖38(!!!)次的覆盖,这是极端的overkill恕我直言(请参阅此处的更多信息)。

就我的用途而言,我只希望单次传递随机数据,所以我使用srm -rfll pathname

如果要在GUI中为文件和文件夹创建右键单击选项,请使用gnome-actions调用如下脚本:

#!/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 

如果您想要更多的偏执设置,请确保修改以上脚本。


1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode-l lessens the security (use twice for total insecure mode)。你能解释这两件事吗?默认情况下38个覆盖将如何影响'38'值。以及为什么要l两次-rfll
Ashu 2012年

2
好的,整个默认过程为:1次传递0xff(零擦除),5次随机传递/ dev / urandom用于安全的RNG(如果可用),27次传递Peter Gutmann定义的特殊值,另外5次随机传递/ dev / random。然后将文件重命名为随机值并截断该文件。在IIRC中,/ dev / random被认为是更好的随机数生成系统。使用-fll,我们跳过1 + 5 + 27 + 5遍,并用一遍随机数据代替,这可能来自不太“真正随机”的生成器。
Veazer

@Ashu在手册页(Debian Jessie)中缩短了srm;(frist) -l: only two passes(second) -l: only one pass。对于其他人,-f: fast (Non-secure random bits)-r: recursive。我也强烈建议-v: verbose。我还建议在一个screen实例中运行它,它可能需要花费大量时间处理大量数据。
ThorSummoner

1
我已替换/usr/bin/srm -fllrvbleachbit -s

8

对于不是目录的文件,这是一种更简单的方法,而不是-exec shred -u {} \;类型的方法:

cd to your directory.

然后

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

这确实将48递归传递到您cd进入的当前目录。

希望这会有所帮助。


将“ -print0”添加到xargs并添加“ -0”?目录名称中可能包含空格。
13年

好的答案,但是为什么要使用xargs?我不懂xargs。
Chinmaya B

1

切细仅适用于文件。您需要先将dir / subdirs中的文件切碎,然后再删除目录。尝试

find [PATH_TO_DIR] 

并确保您只看到要删除的文件

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

然后用

rm -rf [PATH_TO_DIR]

你能解释一下吗{} \;?在其他地方我也看到了与您相同的命令,但这'{}' \;两者之间有什么区别?
阿舒

由于shred在目录上不起作用,如何在find命令中添加-type f选项?
andol 2012年

@ andol:是的,我在想这个..
Ashu

1
不能比find手册页更好地解释它。是查找的-exec选项的一部分。
Ruediger 2012年

1

您可能想要使用类似于以下内容的东西:

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

第一个命令仅查找文件并将其传递给切碎文件(尽可能多地一次-无需像\;这样的每个文件都启动新的切碎过程)。最后,也删除目录。


1

sudo apt install wipe

$ wipe -rfi dir/*

使用标志的地方: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process


0

为此,我在.bashrc中插入了以下bash脚本。

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

例如,当我需要切碎多个文件或整个目录时,只需使用shred -vzn 20 ./shredme/*.*它即可覆盖“ shredme”文件夹中具有任何文件扩展名的所有文件。然后,您可以使用标准rm -rf ./shredme命令删除文件夹本身(或仅单击鼠标右键并删除文件夹),因为在此示例中,所有数据已被覆盖20次。

我用一个重复的图像作了一个简单的例子。

终端截图

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.