使用命令重命名180GB的文件夹有风险吗mv
?
我们有一个/data
包含 180GB 的文件夹。
我们想使用命令将该/data
文件夹重命名为。/BD_FILES
mv
这样做安全吗?
答案1
如果文件夹位于同一文件系统中,则更改文件夹的名称是安全的。
如果它是一个挂载点(/data
看起来它可能是我的一个挂载点,请使用 检查这一点mount
),然后您需要做一些不仅仅是简单的事情mv
,因为mv /data /BD_FILES
会将数据移动到根分区(这可能不是您想要发生的事情)。
您应该卸载文件系统,重命名现在为空的目录,/etc/fstab
使用该文件系统的新位置进行更新,然后在重命名的位置重新挂载文件系统。
换句话说,
umount /data
mv /data /BD_FILES
(假设/BD_FILES
尚不存在,在这种情况下,请先将其移开)- update
/etc/fstab
,将安装点从 更改/data
为/BD_FILES
mount /BD_FILES
这不涉及复制任何文件,它只是更改充当文件系统挂载点的目录的名称。
如果目录的重命名涉及将其移动到新的文件系统(如果/data
在一个磁盘上而/BD_FILES
在另一个磁盘上,则可能是这种情况,例如,如果您要将内容移动到更大的分区,则这是一种常见的做法) ,我建议复制数据,同时保持原始数据不变,直到您可以检查副本是否正常。你可以这样做
rsync -a /data/ /BD_FILES/
例如,但请参阅rsync
手册了解其作用和不作用(例如,它不保留硬链接)。
重命名文件夹后,您还需要确保现有过程(使用文件夹、备份等的程序和用户)了解名称更改。
答案2
您不是重命名目录中的每个文件,而是重命名一文件在/.那是因为:
- 目录是文件,并且
- 文件系统真正关心的是索引节点,而不是实际的文本。
因此,重命名目录,无论其中有多少文件或多少数据,都是微不足道的。
答案3
如果您只是重命名(源和目标在相同的文件系统),它只是目录条目的重命名。它要么成功并且目录具有新名称,要么失败,在这种情况下没有任何变化*。
如果源和目标位于不同的文件系统上,则需要通过 复制数据mv
。文件系统功能的差异(例如最大文件大小、文件名限制等)可能会导致问题。为避免出现问题,请首先复制文件(cp
、rsync
、...),复制成功完成后,删除原始位置中的文件。
* 但是也有一些特殊情况,例如在错误部分在男人2重命名
答案4
重命名是原子的。唯一合理的风险是mv
由于某种原因决定复制所有内容并且中途崩溃。如果您有 GNU mv
,mv -T
将消除此风险。
mv -T
告诉mv
它正在移动到非文件夹;这将导致它拒绝执行mkdir()
此操作,如果移动文件夹并由于某种原因决定复制,则会导致它失败。
mv -T
几年前,我在撰写硕士论文时参与了消除错误的工作。它曾经在太多边缘情况下做错误的事情。
另一方面,根分区上有 180GB 的用户数据。您可能确实想将其移出根分区。