我做了类似的事情:
$ cd /A/B/
$ rm -rf ./*
$ rm -rf ../**
由于网络问题,我的系统与 Ubuntu 断开了连接。当我回来时,文件夹中没有任何文件或文件夹/A
。
答案1
rm
移除文件。它不会将它们放入垃圾箱,因此无法通过常规方法恢复它们。
该标签还-rf
做两件事:
该-r
标签代表recursive
删除你指定的路径或文件和其下的所有其他内容。
标签-f
代表force
,这意味着操作将在没有任何进一步提示的情况下完成。
为了回答有关语法的问题,请记住是./
当前目录的路径,../
是“父”目录(当前目录上方的路径)的路径。
因此,如果您rm -rf ../*
在 下运行/A/B/
,那么您将删除 下的所有内容/A/
。
如果你要使用rm -rf
,请注意这是一个非常强大的命令,它将不加区别地永久删除一切在您指定的路径中。
恢复此操作后文件的唯一选择是使用 photorec/testdisk 等高级数据恢复工具。这些应用程序并不总是能够成功恢复数据,并且继续使用您的设备会降低它们恢复任何内容的可能性。
最好的方法是从备份中恢复。
答案2
rm -rf ../**
当您在目录中运行时/A/B
,它会返回目录/A
并删除其中的所有内容,因为它..
是父目录。
如果您希望能够“恢复”数据,您应该考虑运行启用了活动快照的文件系统。
ZFS
和都已BTRFS
实现快照,并且可以配置自动快照。
例如,如果您配置了过去 24 小时的每小时快照,以及过去 14 天的每日快照,那么您可以随时回滚到给定文件系统的任何一个快照。
自动快照的具体配置将根据所选的文件系统而变化。
其之所以“有效”是因为两个文件系统都实现了“写时复制”,即对文件系统的每个更改都写入新位置 - 因此在快照和指向旧数据的指针过期之前不会删除任何数据。
答案3
你实际做的是(../**)。
如您所见,在给定的命令中放置了双点,它将删除工作 DIR 之前的所有内容。
现在让我们看看它是如何工作的。假设我们有一个名为 XYZ 的位置目录,
# pwd
/
# mkdir XYZ
# cd XYZ
# pwd
/XYZ
按照上述命令,我创建了一个目录。可以将其视为 -> /A/B
现在,当你运行下面提到的命令时,它只会删除工作目录 /XYZ 内的所有内容
rm -rf ./**
但是当您使用双点图标运行相同的命令时,命令本身将更改其运行目录的位置并仅删除 /XYZ 之前的所有内容,但由于用户在该目录中存在的文件夹中工作,而该文件夹当时正在被删除,只有该文件夹将不会被删除,所有内容都将被删除。
很难判断您是否可以恢复数据,但您可以使用 photorec 来帮助您恢复数据,但它会随机更改恢复文件的名称,所以如果您知道那里有什么,那么我不认为您可以恢复数据。
希望这能回答你的问题。
答案4
您正在从文件夹中递归删除文件和文件夹。在一种情况下是父文件夹。
如果您告诉我们您的位置,可能会有所帮助,但如果这是敏感信息,那么您很可能在 /home 或 /opt 或 /var 下的某个地方,因为其他地方有样板名称,您不应该害怕分享。
您可以从外部来源恢复文件,但如果您删除了 bin 文件夹,则系统稳定性可能会出现问题。
在这种情况下,您可以将磁盘安装到另一台机器上进行恢复。
我希望您备份了主要树。在云中(甚至在本地),您可以恢复到最近的整个磁盘映像,只需恢复 /home、/var 以及您备份的任何相对易失性的内容即可。
注意:使用 cp 或 rsync 恢复树可以成为事实上的碎片整理。