如果我们执行 rm -rf ../** 会发生什么?我们可以恢复数据吗?

如果我们执行 rm -rf ../** 会发生什么?我们可以恢复数据吗?

我做了类似的事情:

$ 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 恢复树可以成为事实上的碎片整理。

相关内容