求助! 16T 数据的小文件,如何快速进行拷贝? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
CristianoRonaldo
V2EX    程序员

求助! 16T 数据的小文件,如何快速进行拷贝?

  •  
  •   CristianoRonaldo 22 小时 6 分钟前 4384 次点击

    目前移动硬盘存储了 16T 的数据,目录结构如下企业微信截图_20251029172039.png 目前需要迁移到另一个硬盘上,使用过 fastcopy ,速度太慢了,只有 0.06M/s,全部拷完,公司都倒闭了,如下图 09824d43-28d1-4ee8-8538-d1e0f9d46cc7.png

    求助 v 友还有什么方法,可以快速进行拷贝呢?

    77 条回复    2025-10-30 12:04:11 +08:00
    47jm9ozp
        1
    47jm9ozp  
       22 小时 3 分钟前
    dd?
    gtese
        2
    gtese  
       22 小时 1 分钟前
    用 robocopy 命令? 要么用备份恢复大法?
    malusama
        3
    malusama  
       22 小时 1 分钟前   5
    zip 打包一下再 copy 啊
    xmdbb
        4
    xmdbb  
       21 小时 58 分钟前   2
    让老板增资,这样公司就没那么快倒闭了
    ihuihui
        5
    ihuihui  
       21 小时 58 分钟前
    必然是先打包再拷,而且打包不要选压缩。
    wniming
        6
    wniming  
       21 小时 58 分钟前
    dd 到固态
    ilkpuff
        7
    milkpuff  
       21 小时 53 分钟前
    拷贝分区。是否可行
    duanxianze
        8
    duanxianze  
       21 小时 52 分钟前
    应该有办法整盘克隆吧,走顺序读取会快一些,类似 DiskGenius 似乎有这样的功能
    opengps
        9
    opengps  
       21 小时 52 分钟前   1
    先打个压缩包,你这么小的文件,可能不满一个块大小,实际根本用不了 16T
    bzw875
        10
    bzw875  
       21 小时 49 分钟前
    有没有可能是移动硬盘 4kb 读取性能慢,跟写入设备没关系。
    先复制 100MB 小文件到 SSD 上看看速度吧
    liyafe1997
        11
    liyafe1997  
       21 小时 47 分钟前
    直接 dd 或用类似 dd 的方式,直接把整个文件系统弄过去,而不是以文件为单位拷
    Leao9203
        12
    Leao9203  
       21 小时 44 分钟前 via Android   1
    7zip 直接 tar 归档一下,不需要压缩,速度最快,如果有上云需要,也可以做分包,经常用来跟朋友发送大文件用
    MIUIOS
        13
    MIUIOS  
       21 小时 44 分钟前
    小文件,SSD 的噩梦
    Leao9203
        14
    Leao9203  
       21 小时 43 分钟前 via Android
    大量传输小文件太考验源和目标磁盘的 4K 性能了
    0x5c0f
        15
    0x5c0f  
       21 小时 43 分钟前
    试一试 robocopy 多线程模式, 可能会有好的效果
    realJamespond
        16
    realJamespond  
       21 小时 42 分钟前
    fastcopy 一个 20 年前的工具
    MossFox
        17
    MossFox  
       21 小时 39 分钟前 via Android
    迁移到另一个硬盘上,如果是整个盘就这些文件,Windows 直接拿例如 DiskGenius 整个分区复制过去。不用按文件复制。
    lisxour
        18
    lisxour  
       21 小时 39 分钟前
    压缩包其实也多大作用,因为还是需要疯狂打开文件疯狂 io ,这是最耗时的,只能直接克隆扇区
    opengps
        19
    opengps  
       21 小时 37 分钟前
    elron
        20
    elron  
       21 小时 37 分钟前
    分区 copy
    TsubasaHanekaw
        21
    TsubasaHanekaw  
       21 小时 35 分钟前
    直接扇区复制,吃满磁盘连续性能
    rlds
        22
    rlds  
       21 小时 34 分钟前
    两个一样大的硬盘直接试试用 diskgenius 的分区对拷?
    RobinHuuu
        23
    RobinHuuu  
       21 小时 33 分钟前 via iPhone
    猜测都是 hdd ?
    Chihaya0824
        24
    Chihaya0824  
    PRO
       21 小时 31 分钟前   1
    扇区复制就完事了,别按文件拷贝
    coderwitt
        25
    coderwitt  
       21 小时 28 分钟前
    哥们,如果你的全是纯文本文件,试试 rsync,直接增量同步,放那跑着就行
    如果你是二进制文件,找增量备份或者快照软件,直接对这个目录打个快照,恢复到另一块盘里
    ntedshen
        26
    ntedshen  
       21 小时 27 分钟前
    把硬盘拆了
    能翻倍
    festoney8
        27
    festoney8  
       21 小时 11 分钟前
    最快的方法是扇区复制、克隆硬盘,无 4K 读写,推荐在 PE 系统操作
    ritziiiiii
        28
    ritziiiiii  
       21 小时 10 分钟前
    条件允许的话,可以暂时把两边的硬盘调换一下,先解燃眉之急
    Eason1900
        29
    Eason1900  
       21 小时 8 分钟前
    最快的办法就是把移动硬盘物理连接到目标机器上直接使用。
    然后再后面慢慢同步去
    deplives
        30
    deplives  
       21 小时 7 分钟前
    先 tar 打包不压缩
    再传输,全是小文件,直接考本硬盘 4k 随机读写跟不上的

    不行就直接扇区复制
    kzfile
        31
    kzfile  
       20 小时 46 分钟前
    看起来像是瓦片
    wxf666
        32
    wxf666  
       20 小时 44 分钟前
    这种巨量小文件,存进数据库里(如 SQLite ),是不是会好很多?

    NTFS 文件系统,每个文件元数据(文件名、长度、时间、权限等)起码占 1KB ( MFT 主文件表里),文件内容还要浪费 < 4KB 用于簇对齐。读写文件还得经过复杂的权限校检、杀毒软件放行等。(估计 WinPE 里会快些)

    数据库就轻量很多。8 年前 SQLite [测试]( https://sqlite.org/fasterthanfs.html ),随机读写 10KB 小文件,比文件系统快 35%,节省 20% 空间。转移/备份时也是顺序读写,能全速吃满硬盘。。
    jiagm
        33
    jiagm  
       20 小时 36 分钟前 via Android
    @realJamespond fastcopy 目前仍然有在持续开发。
    zhengwenk
        34
    zhengwenk  
       20 小时 31 分钟前
    直接把这个硬盘安装到目标机器得了
    wxf666
        35
    wxf666  
       20 小时 30 分钟前
    @festoney8 诶,你们觉得,要是能顺序读取硬盘的同时,分析出是哪个文件的内容(应该能通过 MFT 主文件表,获取每个文件数据分布范围吧)。若该文件读完整了,就写入到另一个硬盘里,应该会快很多吧。。

    或者,获得所有文件数据分布范围后,按在硬盘上的顺序,依次读取这些文件,磁头不用频繁移动,也能节省大量时间?(也算近乎顺序读取了?)
    laminux29
        36
    laminux29  
       20 小时 20 分钟前
    前期架构错了,后期就没办法。

    首先机械硬盘的随机 IO 就是慢,其次移动机械硬盘的性能更差劲,慢上加慢。

    下次这种需求,老老实实换 NVME 吧。

    ps.小文件 + 机械硬盘,数据库来了也没辙。
    wxf666
        37
    wxf666  
       20 小时 7 分钟前
    @jiagm #33 fastcopy 有利用 35 楼说的「分析文件内容在硬盘上的分布,按硬盘顺序读取,减少磁头频繁移动,从而节省大量时间。若文件有碎片,在内存里缓存一部分,读完整再写入」原理吗?感觉是真的可行的。。

    如果还没有这样的软件,感觉楼主 @CristianoRonaldo 可以找论坛里,那帮用 AI 很厉害的人,快速写个这样的小工具出来用?
    wxf666
        38
    wxf666  
       20 小时 4 分钟前
    @laminux29 #36 数据库在随机读写里面的小文件时快不了多少,但作为一个大文件,整体去备份 / 迁移,应该能顺序读取,吃满硬盘性能吧。。

    另外,你觉得 35 楼说的「分析文件内容在硬盘上的分布,按硬盘顺序读取,减少磁头频繁移动,从而节省大量时间。若文件有碎片,在内存里缓存一部分,读完整再写入」原理,是可行的吗?
    xkou233
        39
    xkou233  
       20 小时 3 分钟前
    winhex 直接拷盘吧 之前拷贝十几个 T 都是这样
    liuzimin
        40
    liuzimin  
       19 小时 53 分钟前 via Android
    我记得以前 AI 给过我一个 linux 下的思路,是通过一条命令,一边压缩的同时一边解压的方式传输。
    xxbing
        41
    xxbing  
       19 小时 40 分钟前
    rsync ???
    zushi000
        42
    zushi000  
       19 小时 33 分钟前
    用 diskgens 克隆
    standin000
        43
    standin000  
       19 小时 21 分钟前
    @wxf666 估计软件架构是手搓的数据库,所以一直存放小文件
    clemente
        44
    clemente  
       19 小时 20 分钟前
    @ihuihui 解压时间更长...
    festoney8
        45
    festoney8  
       19 小时 8 分钟前
    @wxf666 #35 还从没听说过能按照文件在磁盘中位置的顺序复制文件的,win 大概只能用文件列表顺序读盘,必然产生随机读
    zdl0929
        46
    zdl0929  
       19 小时 2 分钟前
    最快应该是整盘克隆

    dd if=/dev/sdX of=/dev/sdY bs=64M status=progress

    其次应该是直接 tar 到 对应机器目录(别先 tar 再传,避免中间文件)
    tar -cf - . | pv | tar -xf - -C /mnt/target
    clarkethan
        47
    clarkethan  
       18 小时 54 分钟前
    如果两边都是 NTFS ,可以考虑用 Clonezilla ,只拷贝使用了的簇,几乎顺序 io ,也没有文件元数据 io 开销
    wxf666
        48
    wxf666  
       18 小时 50 分钟前
    @festoney8 对呀,就是一个个文件去读,但按照它们内容在硬盘上顺序,去决定文件列表,这样磁头就不需要频繁移动,减少寻道时间,尽量将随机读写,转化成顺序读写了吧?

    实在不行,就手动分析物理硬盘上,每个 4K 块数据,属于哪个文件的呗。然后顺序读取分区,提取数据缓存在内存里,哪个文件缓存完了(可能有文件碎片成多个 4K 块),就写入到另一个硬盘里。

    别说不可能,各种碎片整理软件,都能知道每个文件每一块碎片,在物理磁盘上的偏移范围。。
    abc0123xyz
        49
    abc0123xyz  
       18 小时 27 分钟前
    直接复制硬盘分区
    leeyaunlong
        50
    leeyaunlong  
       18 小时 23 分钟前
    你这移动硬盘应该拆出来装 pc 上再复制啊.
    carlojie
        51
    carlojie  
       17 小时 56 分钟前
    让我想起来天量数据迁移,使用人工搬运
    Reficul
        52
    Reficul  
       17 小时 26 分钟前
    按文件系统拷贝,linux 下面 umount 了之后直接 dd 整个块设备到新硬盘。类似`dd if=/dev/sda of=/dev/sdb`。另外新设备要比老设备大,否则你得先缩文件系统。

    按文件拷贝多线程也没用,瓶颈都在 io 上。
    inorobot
        53
    inorobot  
       17 小时 16 分钟前
    16T 的机械盘,怎么拷都得几天,还是得上 SSD ,
    把移动硬盘拆了,连电脑上用
    festoney8
        54
    festoney8  
       16 小时 50 分钟前
    @wxf666 #48 我感觉哪怕是按磁盘位置优化过读取顺序,仍然会被 NTFS 元数据影响,比如每个写入操作都会伴随 MFT 、bitmap 的修改,还是会带来随机访问,只有绕过文件系统才能提升速率
    TimePPT
        55
    TimePPT  
    PRO
       16 小时 48 分钟前 via Android
    整盘拷贝吧,之前在公司管理过几十 T 稀碎文件,单文件都很小。上个硬盘拷贝机直接插上不用管,很快的。
    Co1e
        56
    Co1e  
       16 小时 22 分钟前
    看看评论 学习学习
    wxf666
        57
    wxf666  
       16 小时 16 分钟前
    @festoney8 #54 Windows 不至于每写一个文件,就强制落盘 $MFT 吧,应该能内存里缓存一段时间,积攒一堆新文件元数据,再一起写入,平摊随机读写成本,转换成大量顺序读写?

    其实感觉楼主应该换新方法存储了,否则 NTFS 每次读写都得额外访问 $MFT 、校检权限、杀毒软件放行等,严重拖慢速度,特别是像现在的备份 / 迁移时。。

    感觉巨量小文件存数据库里更优,元数据很轻量,且能和文件内容放在一起,减少几次随机 IO (视索引 B+ 树层级而定)。还不用 4K 簇对齐,更充分利用硬盘空间。备份 / 迁移时,还能大文件整体拷贝,吃满硬盘性能。

    如果实在要以文件系统形式,对其他程序提供服务,可以用些 fuse 手段。或者参考 RamDisk 它们怎么实现文件读写接口的,它们随机读写文件速度极快,因此这个抽象层应该不会有太多性能损耗。。

    现在 AI 这么发达,上述应该不难实现,论坛首页都一堆讨论 AI 的 v 友,请教下他们,或者出点小钱让其帮忙,应该就行了。。
    laminux29
        58
    laminux29  
       9 小时 34 分钟前
    @wxf666 移动机械硬盘的 debuff 被拉满了,再怎么吃满硬盘性能,硬盘性能也就可怜的那一点点。换架构才是解决问题的关键。

    35 楼同理,架构没搞好,再优化也没用。

    数据证明:

    台式机机械硬盘,4k 速度,读平均为 0.7 MB/s ,写平均为 1.5 MB/s 。

    SATA-SSD ,4k 速度,读平均为 25 MB/s ,写平均为 70MB/s 。

    NVME-SSD ,4k 速度,读平均为 96.9 MB/s ,写平均为 272 MB/s 。

    自己看看差了多少倍吧。这就像一句名言:选择大于努力。
    dmanbu
        59
    dmanbu  
       7 小时 5 分钟前
    @xxbing rsync 复制小文件,特别是目录多的情况下,非常慢。用 dd 进行数据块克隆还快些
    0superx0
        60
    0superx0  
       6 小时 43 分钟前
    我能想到的只有 dd 是最快的了
    cheneydog
        61
    cheneydog  
       6 小时 28 分钟前
    拷完了公司倒闭,永远拷不完公司就永远不会倒闭。
    dode
        62
    dode  
       5 小时 52 分钟前
    首选硬盘镜像,其次是调小当前分区大小,再硬盘镜像
    eric3797
        63
    eric3797  
       5 小时 50 分钟前
    restic 备份到移动硬盘,再从移动硬盘恢复到目标硬盘,速度基本都是满速
    Haku
        64
    Haku  
       5 小时 33 分钟前
    先 tar 再移吧
    zjyl1994
        65
    zjyl1994  
       5 小时 29 分钟前
    看看 diskgenuis 之类的,整个盘克隆,这样顺序读写最快。要不然这么碎的文件隔着一层文件系统快不到哪里去
    5ssl
        66
    5ssl  
       5 小时 18 分钟前
    利用 tar for windows 对大量文件进行快速打包

    tar -cvf /wwwroot.tar d:/wwwroot
    oisadfo
        67
    oisadfo  
       5 小时 15 分钟前
    什么平台,什么文件系统,windows 的 ntfs 等文件系统,有很多工具,搜下 分区克隆或者磁盘克隆
    zxjxzj9
        68
    zxjxzj9  
       5 小时 12 分钟前
    问了下 ai 有个点子我觉得可以,就是自己定义一个简单的二进制文件把数据打包进去(不是压缩包协议)然后整块传输。sqlite 有事务这个机制在估计也不是很适合
    kasusa
        69
    kasusa  
       5 小时 5 分钟前
    硬盘对拷设备来搞。
    放那慢慢拷。几天完事了。
    CristianoRonaldo
        70
    CristianoRonaldo  
    OP
       4 小时 50 分钟前
    谢谢各位,今天上午试了一下 diskgenuis ,整盘拷贝,速度非常快,2000MB/min ,![080c8019-992c-4f92-9d91-4e9541ecae07.jpg]( https://youke1.picui.cn/s1/2025/10/30/6902d03c0b1bf.jpg)
    这部分数据的使用,会挂 ftp ,提供给业务系统,想过入库 minio 这些文件系统,但是太慢了,就直接挂 FTP 了。
    CristianoRonaldo
        71
    CristianoRonaldo  
    OP
       4 小时 48 分钟前
    谢谢各位,今天上午试了一下 diskgenuis ,整盘拷贝,速度非常快,2000MB/min ,,这部分数据的使用,会挂 ftp ,提供给业务系统,想过入库 minio 这些文件系统,但是太慢了,就直接挂 FTP 了。
    apples01
        72
    apples01  
       4 小时 47 分钟前
    @malusama 都是小文件打包也很慢的
    yulgang
        73
    yulgang  
       4 小时 42 分钟前
    当然是做磁盘镜像啊
    lswlray
        74
    lswlray  
       4 小时 21 分钟前
    @CristianoRonaldo 你是用 DG 的 克隆磁盘 ?克隆分区? 扇区复制?
    CristianoRonaldo
        75
    CristianoRonaldo  
    OP
       4 小时 10 分钟前
    @lswlray #74 克隆磁盘不行,两边盘大小不一样,选的复制文件
    dosmlp
        76
    dosmlp  
       4 小时 5 分钟前
    分区克隆,然后再在目标硬盘上调整分区大小就行了
    Gilfoyle26
        77
    Gilfoyle26  
       3 小时 28 分钟前
    《只有 0.06M/s,全部拷完,公司都倒闭了》公司倒闭了,就不要拷贝了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5212 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:32 PVG 15:32 LAX 00:32 JFK 03:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86