Lac*_*cey 6 filesystems ext4 ntfs fat
我想知道这是否被认为是安全的。我知道只要链接仍然存在,文件句柄就可以正常工作,并且我知道标识符是 inode 而不是名称,但我不确定它如何在不同的 FS 中工作。
例如,从 ext4 硬盘驱动器复制到 NTFS USB 记忆棒,或从 FAT 记忆棒复制到 ext4 驱动器。
我只是复制了一堆大型媒体文件,并在复制完成之前重命名了它们。校验和匹配。我想知道它是否总是安全的,它会在相反的方向工作,我应该知道哪些怪癖或避免这样做的原因?
操作系统/发行版是带有 5.0.0-15 Linux 内核的 Ubuntu。
我不确定它是如何在不同的 FS 中工作的。
重命名操作本身不会跨不同的文件系统进行操作;从文本编辑器写入文件cp
与使用另一个文件系统上的源文件写入文件之间没有区别。
在 Linux 上,rename
系统调用对于文件的其他链接是透明的,包括其他硬链接和打开的文件描述(和描述符)。联机帮助页明确指出
oldpath 的打开文件描述符也不受影响。
(我符合“在 Linux 上”的资格只是因为我在 POSIX 中找不到参考;我认为这在 POSIX 风格的操作系统中很常见。)
因此,当您跨文件系统复制文件时,cp
打开源进行读取,打开目标进行写入,然后开始复制。重命名操作不会影响它使用的文件描述符;您可以重命名源和/或目标而不影响cp
.
另一种思考方式是,其包含目录中的文件名是其目录条目的一部分,指向其 inode;打开的文件描述是指向 inode 的其他指针,其他硬链接也是如此。更改文件名不会影响任何其他现有指针。
需要注意的是,诸如此类的工具mv
并不局限于rename
系统调用可以做什么;如果你mv
跨文件系统文件,rename
将会失败(或者mv
会发现该操作是跨文件系统的,甚至不会尝试它),然后mv
将诉诸手动复制文件内容并删除原始文件。如果被重命名的文件同时被更改,这不会产生好的结果。
归档时间: |
|
查看次数: |
932 次 |
最近记录: |