如果在 mv 操作的中间 Ctrl C 会发生什么?文件会损坏吗?
如果在同一个文件系统上,不会。因为 mv 使用了 rename syscall 来完成,这是一个原子操作,不存在被 Ctrl-C 打断的时机。
如果不在同一个文件系统上或不在同一个挂载点下,则不支持rename syscall ,会退化成copy & unlink 的方式来实现跨文件系统移动操作,所以如果在跨文件系统 mv 文件的过程中调用 Ctrl C,mv 可能会在 src 或者 dst 处留下一个不完整的文件,但是 mv 总是会保证 src/dst 中的一个是完整的,而不是两处都不完整。
https://xuanwo.io/reports/2021-25/
如果在同一个文件系统上,不会。因为 mv 使用了 rename syscall 来完成,这是一个原子操作,不存在被 Ctrl-C 打断的时机。
如果不在同一个文件系统上或不在同一个挂载点下,则不支持rename syscall ,会退化成copy & unlink 的方式来实现跨文件系统移动操作,所以如果在跨文件系统 mv 文件的过程中调用 Ctrl C,mv 可能会在 src 或者 dst 处留下一个不完整的文件,但是 mv 总是会保证 src/dst 中的一个是完整的,而不是两处都不完整。
https://xuanwo.io/reports/2021-25/