重命名一个大文件夹:有风险吗?

重命名一个大文件夹:有风险吗?

使用命令重命名180GB的文件夹有风险吗mv

我们有一个/data包含 180GB 的文件夹。

我们想使用命令将该/data文件夹重命名为。/BD_FILESmv

这样做安全吗?

答案1

如果文件夹位于同一文件系统中,则更改文件夹的名称是安全的。


如果它是一个挂载点/data看起来它可能是我的一个挂载点,请使用 检查这一点mount),然后您需要做一些不仅仅是简单的事情mv,因为mv /data /BD_FILES会将数据移动到根分区(这可能不是您想要发生的事情)。

您应该卸载文件系统,重命名现在为空的目录,/etc/fstab使用该文件系统的新位置进行更新,然后在重命名的位置重新挂载文件系统。

换句话说,

  1. umount /data
  2. mv /data /BD_FILES(假设/BD_FILES尚不存在,在这种情况下,请先将其移开)
  3. update /etc/fstab,将安装点从 更改/data/BD_FILES
  4. mount /BD_FILES

这不涉及复制任何文件,它只是更改充当文件系统挂载点的目录的名称。


如果目录的重命名涉及将其移动到新的文件系统(如果/data在一个磁盘上而/BD_FILES在另一个磁盘上,则可能是这种情况,例如,如果您要将内容移动到更大的分区,则这是一种常见的做法) ,我建议复制数据,同时保持原始数据不变,直到您可以检查副本是否正常。你可以这样做

rsync -a /data/ /BD_FILES/

例如,但请参阅rsync手册了解其作用和不作用(例如,它不保留硬链接)。


重命名文件夹后,您还需要确保现有过程(使用文件夹、备份等的程序和用户)了解名称更改。

答案2

您不是重命名目录中的每个文件,而是重命名文件在/.那是因为:

  1. 目录是文件,并且
  2. 文件系统真正关心的是索引节点,而不是实际的文本。

因此,重命名目录,无论其中有多少文件或多少数据,都是微不足道的。

答案3

如果您只是重命名(源和目标在相同的文件系统),它只是目录条目的重命名。它要么成功并且目录具有新名称,要么失败,在这种情况下没有任何变化*

如果源和目标位于不同的文件系统上,则需要通过 复制数据mv。文件系统功能的差异(例如最大文件大小、文件名限制等)可能会导致问题。为避免出现问题,请首先复制文件(cprsync、...),复制成功完成后,删除原始位置中的文件。

* 但是也有一些特殊情况,例如在错误部分在男人2重命名

答案4

重命名是原子的。唯一合理的风险是mv由于某种原因决定复制所有内容并且中途崩溃。如果您有 GNU mvmv -T将消除此风险。

mv -T告诉mv它正在移动到非文件夹;这将导致它拒绝执行mkdir()此操作,如果移动文件夹并由于某种原因决定复制,则会导致它失败。

mv -T几年前,我在撰写硕士论文时参与了消除错误的工作。它曾经在太多边缘情况下做错误的事情。

另一方面,根分区上有 180GB 的用户数据。您可能确实想将其移出根分区。

相关内容