--link
和 和有什么区别--reflink=always
?
我使用以下命令作为mv
替代,我想知道使用是否--reflink
是更好的选择。
command gcp -r --link --archive --verbose "${opts[@]}" "$@"
# delete the sources manually
答案1
--link
导致cp
创建硬链接而不是复制。一旦“复制”完成,假设它位于同一文件系统中(这是硬链接所必需的),则该文件的单个实例将出现在磁盘上,并且有两个或多个目录条目指向它。这是期望的外部状态,IE多个目录条目指向同一个文件的事实是可见的——它们指向同一个 inode。通过其中一个目录条目所做的更改也可以通过另一个目录条目看到。
--reflink=always
如果可能的话,请求优化副本。这可以采取多种形式;最著名的是写时复制,但它也可以作为网络文件系统上的服务器端复制来实现。一旦复制完成,可能会出现这样的情况:磁盘上存在数据块的单个副本,但存在两个文件,并且每个目录项都指向不同的文件。通过一个目录条目所做的更改将不会通过另一个目录条目可见;每个文件都有单独的生命周期(除了共享数据块的副作用,例如磁盘损坏将影响这两个文件)。
换句话说,--link
显式请求创建指向同一文件的新目录条目,共享后续更改。--reflink=always
请求创建新文件,并进行潜在的优化,并隔离后续更改。
作为mv
替代方案,--link
比--reflink=always
- 它将减少操作系统的工作量。