当你这样做时:
cp file1 file2
(file2
已经存在)
幕后究竟发生了什么?
1) 的内容是否file1
实际被复制到file2
?
2) 还是创建了一个名称相同的新文件file2
(覆盖旧文件),其内容相同file1
?
通常是第一个。索引条目和文件数据都被写入。
然而,了解你是什么(文件)系统会有所帮助(猜测 linux 风格)。
如果您正在创建连接点或符号/硬链接,您可能会知道。
可以这样想:
硬链接是一个指针/名称,它指向一个数据;即它只是一个替代文件名;它与创建它的文件具有相同的 inode 编号。
明显地复制,数据的副本;指向复制它的文件的不同方向;具有不同的 inode 编号。
系统调用也有区别,但这有点深入探讨问题
1)由于您使用的是“cp”,我假设操作系统是Linux。
2) 在 Linux 上,“文件”由“inode”引用。下面是两个示例文件:
$ ls -li 1 2
245728 -rw-r--r-- 1 paulsm users 8 Aug 14 14:52 1
245729 -rw-r--r-- 1 paulsm users 8 Aug 14 14:52 2
$ cat 1
Hello 1
$ cat 2
Hello 2
3)这是“cp”之后的结果
$ cp 1 2
$ ls -li 1 2
245728 -rw-r--r-- 1 paulsm users 8 Aug 14 14:52 1
245729 -rw-r--r-- 1 paulsm users 8 Aug 14 14:55 2
$ cat 2
Hello 1
你看:
a) “1”的内容完全取代“2”
b) 没有“新文件”——“2”的 inode 在复制之前保持不变
c) 文件日期随文件内容而改变
'希望有帮助.. PSM