使用 tar 拷贝文件速度会更快吗?

2023-11-15 11:19:37 +08:00
 pxiphx891

我在 tar 的 manual 中看到这样的示例

To move file hierarchies, invoke tar as

           tar -cf - -C srcdir . | tar -xpf - -C destdir

or more traditionally

           cd srcdir ; tar -cf - . | (cd destdir ; tar -xpf -)

这和cp -r有什么区别?

814 次点击
所在节点    程序员
3 条回复
AoEiuV020JP
2023-11-15 11:33:29 +08:00
速度没差的,纯 tar 也不包含压缩,
主要用途应该是保留各种权限、所有者、软链接、甚至是修改时间,
不确定,没这么用过,
miaosl
2023-11-15 14:02:57 +08:00
但是对于一些琐碎的小文件来说,tar 打包之后传输还是快些的
然后就是 tar 可以把目录打包比如 tar -cf /root/test/*
解压缩出来的就是/root/test/*这样的一个目录
ysc3839
2023-11-15 19:14:40 +08:00
去看了下 coreutils 的代码,cp 是支持 fclonefileat 或 ioctl FICLONE 的,所以在特定文件系统下会更快。如果 tar 更快的话,个人猜测要不然是因为中间有管道作为缓冲,不过管道默认的缓冲区大小不算太大,可能提升不明显。要不然是因为 tar 没有 cp 那么多额外的检查。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/992046

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX