tar命令:使用-r参数与-c参数创建归档文件是否等效?
tar
-r 和 -c 参数创建归档的区别 归档不存在时的表面效果
当目标归档文件还未创建时,执行tar -rf hello.tar hello和tar -cf hello.tar hello确实都会生成包含hello文件的归档,这时候最终的归档内容在常规使用场景下是一致的。
核心差异与实际使用区别
设计目的不同
-c是专门用来创建新归档的参数,本质就是「新建」;而-r的本职工作是给已存在的归档追加文件,创建归档只是它的兼容 fallback 行为,不是核心功能。对已有归档的处理完全不同
如果hello.tar已经存在:tar -cf会直接替换整个原归档,里面原来的内容全部丢失,换成新的文件;tar -rf会把新文件追加到原归档的末尾,原有内容保留,新内容加在后面。
特殊场景下的限制差异
要是处理的是压缩归档(比如.tar.gz这类),-r根本没法直接追加内容——因为压缩归档是整体压缩的,无法单独追加;但-c可以配合-z这类参数直接创建压缩归档。
另外,部分tar版本里,-r创建的归档在元数据细节上可能和-c略有不同,不过普通使用基本感受不到。
结论
如果只是临时创建新归档,用-r和-c结果可能一样,但从规范和可读性来说,创建新归档就用-c,追加内容才用-r,符合工具设计逻辑,也不会给后续看命令的人造成误解。
内容的提问来源于stack exchange,提问作者kukelia
相关产品推荐
相关产品推荐

