V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pxiphx891
V2EX  ›  程序员

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

  •  
  •   pxiphx891 · 2023-11-15 11:19:37 +08:00 · 795 次点击
    这是一个创建于 378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在 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有什么区别?

    3 条回复    2023-11-15 19:14:40 +08:00
    AoEiuV020JP
        1
    AoEiuV020JP  
       2023-11-15 11:33:29 +08:00
    速度没差的,纯 tar 也不包含压缩,
    主要用途应该是保留各种权限、所有者、软链接、甚至是修改时间,
    不确定,没这么用过,
    miaosl
        2
    miaosl  
       2023-11-15 14:02:57 +08:00   ❤️ 2
    但是对于一些琐碎的小文件来说,tar 打包之后传输还是快些的
    然后就是 tar 可以把目录打包比如 tar -cf /root/test/*
    解压缩出来的就是/root/test/*这样的一个目录
    ysc3839
        3
    ysc3839  
       2023-11-15 19:14:40 +08:00 via Android
    去看了下 coreutils 的代码,cp 是支持 fclonefileat 或 ioctl FICLONE 的,所以在特定文件系统下会更快。如果 tar 更快的话,个人猜测要不然是因为中间有管道作为缓冲,不过管道默认的缓冲区大小不算太大,可能提升不明显。要不然是因为 tar 没有 cp 那么多额外的检查。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.