1

当你这样做时:

cp file1 file2

file2已经存在)

幕后究竟发生了什么?

1) 的内容是否file1实际被复制到file2

2) 还是创建了一个名称相同的新文件file2(覆盖旧文件),其内容相同file1

4

2 回答 2

0

通常是第一个。索引条目和文件数据都被写入。
然而,了解你是什么(文件)系统会有所帮助(猜测 linux 风格)。

如果您正在创建连接点或符号/硬链接,您可能会知道。

可以这样想:
硬链接是一个指针/名称,它指向一个数据;即它只是一个替代文件名;它与创建它的文件具有相同的 inode 编号。

明显地复制,数据的副本;指向复制它的文件的不同方向;具有不同的 inode 编号。

系统调用也有区别,但这有点深入探讨问题

于 2012-08-14T21:50:09.730 回答
0

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

于 2012-08-14T21:54:41.780 回答