使用该mv
命令将文件夹重命名为180GB是否有风险?
我们有一个/data
包含180GB 的文件夹。
我们要使用命令将/data
文件夹重命名为。/BD_FILES
mv
这样安全吗?
使用该mv
命令将文件夹重命名为180GB是否有风险?
我们有一个/data
包含180GB 的文件夹。
我们要使用命令将/data
文件夹重命名为。/BD_FILES
mv
这样安全吗?
Answers:
如果在同一文件系统中,更改文件夹名称是安全的。
如果它是一个挂载点(/data
有点像对我来说可能是一个挂载点,请使用进行检查mount
),那么您需要做的不只是简单的事情,mv
因为mv /data /BD_FILES
会将数据移动到根分区(可能不是这样)你想发生)。
您应该卸载文件系统,重命名现在为空的目录,/etc/fstab
使用该文件系统的新位置进行更新,然后在重命名的位置重新安装文件系统。
换一种说法,
umount /data
mv /data /BD_FILES
(假设/BD_FILES
尚不存在,在这种情况下,请先将其移开)/etc/fstab
,将挂载点从更改/data
为/BD_FILES
mount /BD_FILES
这并不涉及复制任何文件,它只是更改充当文件系统安装点的目录的名称。
如果目录的重命名涉及将其移动到新的文件系统(例如,/data
在一个磁盘上而/BD_FILES
另一个磁盘上,则是常见的做法,例如,将内容移动到更大的分区上) ,建议您在保留原始数据的同时复制数据,直到您可以检查复制是否正常为止。你可以这样做
rsync -a /data/ /BD_FILES/
例如,但是请参见rsync
手册以了解它的功能(例如,它不保留硬链接)。
重命名文件夹后,还需要确保现有过程(使用该文件夹的程序和用户,备份等)知道名称更改。
mv
只进行rename
系统调用的风险,但是由于某些情况,人们尚未意识到将要复制文件并删除原始文件。如果我绝对需要进行rename
系统调用,而又mv
不想在背后做些“聪明”的事情,则打开Python shell并使用os.rename
。
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
是它可以重新启动。
rsync -a
几乎保留所有元数据,但不保留硬链接,ACL或扩展属性(-HAX
为此添加)。
rename
不同的行为不同的命令。我认为这足以rename
在您确定要执行的操作时不使用该命令。
正如其他人所说,重命名文件夹不会对内容造成固有的风险。但是,您可能需要考虑另一种风险。
通过此更改,可能会破坏引用原始位置的现有过程,脚本,用户定义的快捷方式和配置,例如,如果路径存储在数据库中,则对其进行更新可能是一项艰巨的工作。
您可以做的一件事是为新目录名称建立符号链接,但将旧名称保留一段时间。这将使您有时间评估此更改的影响。您可以暂时删除旧名称,看看是否有问题,如果存在问题,只需重新创建旧名称,以便人们在确定需要更新的内容时继续工作。
像这样的命令应该做到这一点:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
。这样,我便有了新名称,并且可以通过删除符号链接轻松地测试旧名称的缺失。
重命名是原子的。唯一合理的风险是,mv
由于某种原因决定复制所有内容,并且在整个过程中崩溃。如果您有GNU mv
,mv -T
将消除这种风险。
mv -T
告诉mv
它正在移动到非文件夹;mkdir()
如果移动文件夹并且由于某种原因决定进行复制,则会导致它拒绝执行操作,进而导致它失败。
mv -T
多年前,我参与了硕士论文的研究,摆脱了一些bug 。在很多情况下,它曾经做错了事。
另一方面,根分区上有180GB的用户数据。您可能确实希望将其移出根分区。
mv
该-i
选项。