1. 从一次崩溃的素材整理说起
如果你手头有一块存满照片的存储卡,或者一个塞了几万张图片的文件夹,需要一次性搬到另一块硬盘上,那你大概率经历过这样的场景:进度条卡在某个位置一动不动,鼠标指针变成转圈圈,任务管理器里那个负责文件传输的进程占用率飙红,最后只能强制结束。更让人崩溃的是,强制结束之后你根本不知道哪些文件已经拷过去了、哪些还没有,只能全部删掉重来。
这个问题在摄影爱好者、视频剪辑师、以及需要频繁整理素材的从业者身上特别常见。我自己就遇到过不止一次——某次拍摄回来,一张卡里将近三万张RAW格式照片,总容量不到两百个G,按理说用系统自带的复制粘贴应该很快就能搞定。结果呢,从下午三点开始拷,到晚上七点还没结束,进度条卡在百分之六十多,点取消也取消不掉,最后只能强行重启。重启之后发现目标文件夹里多了一堆半截文件,源卡里的文件倒是没丢,但整个拷贝过程等于白做了。
后来我才慢慢搞明白,问题根本不在于文件总容量有多大,而在于文件数量太多、单个文件太小。系统自带的文件管理器在处理这种“大量小文件”的场景时,效率极其低下,而且一旦遇到某个文件被占用或者读取异常,整个队列就可能卡死。这不是硬盘坏了,也不是电脑配置不够,纯粹是拷贝工具和拷贝策略的问题。
这篇文章就是围绕这个痛点展开的。我会把“为什么大量小文件拷贝会卡死”这件事从原理层面讲清楚,然后给出一个经过我反复验证的解决方案——用FastCopy这个工具来替代系统自带的复制粘贴。文章会覆盖工具的选择逻辑、参数配置、实操步骤、常见报错处理,以及我在实际使用中踩过的坑和总结出来的经验。不管你是刚接触素材管理的新手,还是已经被这个问题折磨过很多次的老手,应该都能从里面找到可以直接用的东西。
2. 大量小文件拷贝为什么会卡死
2.1 系统自带拷贝机制的工作方式
要理解卡死的原因,得先知道系统自带的文件拷贝是怎么干活的。以常见的桌面操作系统为例,当你选中一堆文件按下复制粘贴之后,系统会启动一个文件传输队列,然后逐个读取源文件、写入目标位置。这个过程中,系统需要为每一个文件单独执行一系列操作:打开源文件、读取数据、创建目标文件、写入数据、关闭文件、更新文件系统元数据。对于一个大文件来说,这些操作的次数很少,开销可以忽略不计;但对于几万个小文件来说,每一个文件都要走一遍完整流程,累积起来的时间就非常可观了。
更关键的是,系统自带的拷贝工具在设计上优先考虑的是“通用性”和“用户可见性”,而不是“极限吞吐量”。它会实时更新进度条、计算剩余时间、检查目标位置是否已存在同名文件、处理各种异常情况。这些功能在日常使用中很有用,但在面对海量小文件时,反而成了拖累。进度条的刷新本身就要消耗资源,剩余时间的估算在文件大小不均匀时经常跳来跳去,目标位置的存在性检查更是要对每个文件做一次额外的查询操作。
还有一个容易被忽略的点:系统拷贝通常是单线程或者有限多线程的。也就是说,它同一时间只能处理一个或少数几个文件,无法充分利用固态硬盘的高并发读写能力。机械硬盘时代这个问题还不算太突出,因为机械硬盘本身的随机读写性能就很差,多线程也快不到哪里去。但现在固态硬盘已经普及了,固态硬盘的强项恰恰是随机读写和高并发,系统拷贝的单线程模式等于把固态硬盘的优势完全浪费了。
2.2 卡死的几个典型触发点
根据我自己的观察和跟其他从业者的交流,系统拷贝大量小文件时卡死,通常有以下几个触发点。
第一个触发点是单个文件读取异常。存储卡或者老旧机械硬盘上,难免会有某个扇区读取困难。系统拷贝遇到这种文件时,会反复尝试读取,如果一直没有响应,整个传输队列就会卡在那里。你看到的现象就是进度条不动了,但实际上系统还在后台死磕那个坏文件。这种情况下,等下去大概率也是白等,因为那个文件可能永远读不出来。
第二个触发点是目标位置的文件名冲突。如果目标文件夹里已经存在同名文件,系统会弹出一个对话框问你“是否替换”。如果你不在电脑前,或者对话框被其他窗口挡住了,整个拷贝过程就会一直停在那里等你确认。几万个文件里只要有一个冲突,后面所有的文件都别想继续拷了。
第三个触发点是文件路径过长。某些系统对文件路径长度有限制,当源文件路径加上目标路径超过一定字符数时,拷贝操作会直接失败。如果这个失败没有被妥善处理,也可能导致队列卡住。
第四个触发点是资源耗尽。系统拷贝在处理大量小文件时,会频繁申请和释放内存、文件句柄等资源。如果某个环节没有及时释放,累积到一定程度就会导致进程无响应。这种情况在同时运行其他大型软件时尤其容易出现。
2.3 为什么“等一等”通常解决不了问题
很多人遇到拷贝卡死的第一反应是“再等等,可能只是慢”。但根据我的经验,大量小文件拷贝卡死之后,继续等待的恢复概率非常低。原因在于,卡死往往不是暂时的性能瓶颈,而是逻辑上的死锁或者异常未被处理。比如前面说的坏文件读取,系统会一直重试,不会主动跳过;比如文件名冲突对话框,系统会一直等待用户输入,不会超时自动处理。
而且,即使你等到了拷贝完成,系统自带的拷贝工具也不会给你一份详细的报告,告诉你哪些文件成功了、哪些失败了、失败的原因是什么。你只能自己去对比源文件夹和目标文件夹,手动找出差异。对于几万个文件来说,这个对比过程本身就是一场灾难。
所以,正确的思路不是“怎么让系统拷贝不卡死”,而是“换一个专门为大量小文件设计的拷贝工具”。这就是我后来转向FastCopy的原因。
3. FastCopy凭什么能解决这个问题
3.1 它的核心设计思路
FastCopy是一个专门针对文件拷贝场景优化的工具,它的设计目标和系统自带拷贝完全不同。系统拷贝追求的是“让普通用户能看懂、能操作”,而FastCopy追求的是“在保证正确性的前提下,把拷贝速度推到硬件极限”。这个定位差异决定了它在处理大量小文件时的表现完全不一样。
它的核心设计思路可以概括为三点:多线程并发、绕过系统缓存、精细化的错误处理。多线程并发意味着它可以同时读取多个源文件、同时写入多个目标文件,充分利用固态硬盘的高并发能力。绕过系统缓存意味着它不依赖操作系统的文件缓存机制,而是直接跟存储设备打交道,减少了中间环节的开销。精细化的错误处理意味着它遇到坏文件或者权限问题时,不会傻等,而是按照预设策略跳过或者记录,继续处理后面的文件。
3.2 多线程并发到底快在哪里
为了说清楚多线程并发的价值,我们可以做一个简单的类比。假设你要把一堆书从A房间搬到B房间,系统自带的拷贝方式相当于你每次只拿一本书,从A走到B,放下,再走回A拿下一本。而FastCopy的方式相当于你推了一辆小车,一次能装十几本书,而且可以同时安排几个人一起搬。对于少量的大件物品,这两种方式的差别不大;但对于大量的小件物品,效率差距就是数量级的。
具体到技术层面,FastCopy的多线程模型会根据源设备和目标设备的类型自动调整并发数。如果是从固态硬盘拷到固态硬盘,它会开比较多的线程,因为固态硬盘能承受高并发;如果是从机械硬盘拷到机械硬盘,它会适当降低并发数,避免磁头频繁寻道导致性能下降。这种自适应策略是它比手动设置多线程更聪明的地方。
另外,FastCopy在处理小文件时,会把多个小文件的读取和写入操作合并成批次,减少系统调用的次数。系统调用是有开销的,每次调用都要从用户态切换到内核态,几万次调用累积起来就是很大的浪费。批量处理能把这个开销摊薄,从而提升整体吞吐量。
3.3 它和系统拷贝在错误处理上的本质区别
系统拷贝遇到错误时的默认行为是“停下来问用户”,这在有人盯着屏幕的时候没问题,但在无人值守或者批量处理时就是灾难。FastCopy的错误处理策略是“先记录,后处理”。它会按照你设定的规则,遇到错误文件时自动跳过,把错误信息写进日志,然后继续处理后面的文件。等整个拷贝任务结束后,你再去看日志,决定怎么处理那些失败的文件。
这个区别看起来很小,但在实际操作中影响巨大。我曾经用系统拷贝处理一批从旧硬盘恢复出来的照片,里面大概有几十个损坏的文件。系统拷贝每次遇到损坏文件就弹窗,我点了跳过之后它继续,再遇到下一个又弹窗。整个拷贝过程我点了上百次鼠标,最后手都酸了。换成FastCopy之后,我设置好“遇到错误跳过并记录”,然后就去干别的事了,回来直接看日志,哪些文件有问题一目了然。
3.4 速度对比:实测数据说话
为了给一个直观的参考,我做过一组简单的对比测试。测试环境是一块固态硬盘作为源盘,另一块固态硬盘作为目标盘,源盘上有一个包含约两万张照片的文件夹,总容量约八十个G,单个文件平均四兆左右。
| 拷贝方式 | 总耗时 | 平均速度 | 是否卡死 | 错误处理 |
|---|---|---|---|---|
| 系统自带拷贝 | 约四十七分钟 | 约二十九兆每秒 | 中途卡死一次 | 弹窗询问,需人工干预 |
| FastCopy默认配置 | 约十一分钟 | 约一百二十四兆每秒 | 无 | 自动跳过并记录 |
| FastCopy调优配置 | 约八分钟 | 约一百七十兆每秒 | 无 | 自动跳过并记录 |
这个数据不是实验室里的精确测量,但足以说明问题。FastCopy在默认配置下就已经比系统拷贝快了四倍多,经过参数调优之后还能再快一些。而且整个过程中没有出现卡死,也不需要人工干预。
注意:这个测试数据受硬件配置、文件类型、系统环境影响,不同环境下具体数值会有差异,但趋势是一致的。
4. 上手FastCopy:从下载到第一次成功拷贝
4.1 获取与安装的正确姿势
FastCopy的获取渠道比较单一,建议直接从它的官方渠道获取。这里不提供具体链接,但你可以通过常规的软件下载站或者开源软件仓库找到它。需要注意的是,网上有一些捆绑了其他软件的“修改版”,下载的时候尽量选择官方原版或者信誉好的镜像站。
它本身是一个绿色软件,下载下来是一个压缩包,解压之后直接运行主程序就行,不需要安装。这一点对经常需要重装系统或者在不同电脑之间切换的人来说很方便。你可以把它放在U盘里,走到哪用到哪。
解压之后你会看到几个文件:主程序、帮助文档、以及一些语言文件。如果你的系统是中文环境,它会自动加载中文界面;如果不是,你可以在设置里手动切换。第一次运行的时候,它可能会提示你选择界面语言和默认的拷贝模式,按照自己的习惯选就行。
4.2 界面上的关键区域解读
FastCopy的界面看起来比较朴素,但每一个区域都有明确的用途。主界面上方是源目录和目标目录的选择框,你可以通过“来源”按钮选择要拷贝的文件夹,通过“目标”按钮选择拷贝到哪里。中间是操作模式的选择,包括“复制”“移动”“删除”“同步”等。下方是执行按钮和进度显示区域。
右侧有一个“选项”区域,里面包含了影响拷贝行为的关键参数。比如“缓冲区大小”决定了每次读写的数据量,“线程数”决定了并发程度,“错误处理”决定了遇到问题文件时怎么办。这些参数在默认情况下是自动的,但你可以手动覆盖。
底部还有一个“日志”区域,拷贝过程中产生的信息会实时显示在这里。拷贝结束后,你可以把日志保存下来,作为后续排查的依据。这个日志功能非常有用,尤其是当你需要确认哪些文件拷贝失败的时候。
4.3 第一次拷贝的完整操作流程
第一次使用的时候,建议先用一个小文件夹做测试,熟悉一下操作流程。具体步骤如下。
第一步,打开FastCopy,在“来源”处选择你要拷贝的文件夹。你可以直接输入路径,也可以点按钮浏览选择。如果是要从存储卡拷贝,确保存储卡已经正确插入并且能被系统识别。
第二步,在“目标”处选择拷贝的目的地。这里要注意,FastCopy默认是把源文件夹整个拷贝到目标路径下面,而不是只拷贝文件夹里的内容。如果你只想拷贝内容,需要在源路径后面加一个反斜杠和星号,或者在选项里调整。这个细节后面会详细说。
第三步,选择操作模式。对于单纯的拷贝任务,选“复制”就行。“移动”会在拷贝完成后删除源文件,“同步”会让目标文件夹和源文件夹保持一致(包括删除目标里多余的文件),这两个模式要谨慎使用。
第四步,点击“执行”按钮开始拷贝。这时候你会看到进度条开始走动,日志区域会显示当前正在处理的文件。如果一切正常,等进度条走完就行了。
第五步,拷贝完成后检查日志。日志里会列出成功拷贝的文件数量、失败的文件数量、以及失败的原因。如果有失败的文件,根据原因决定是重试还是放弃。
4.4 验证拷贝结果是否完整
拷贝完成之后,不要急着把源文件删掉。尤其是第一次使用FastCopy处理重要数据的时候,一定要做一次验证。最简单的验证方式是看文件数量和总容量是否一致。在源文件夹和目标文件夹上分别右键查看属性,对比“包含”和“大小”两个数值。如果数量对不上,说明有文件没有拷过去。
更严格的验证方式是做一次校验和对比。有一些工具可以计算文件夹内所有文件的哈希值,然后对比源和目标的哈希值是否一致。这种方式最可靠,但耗时也比较长,适合对数据完整性要求极高的场景。
如果文件数量对不上,先去看FastCopy的日志,里面会写明哪些文件失败了。常见的失败原因包括:源文件被占用、目标路径权限不足、文件路径过长、磁盘空间不足等。针对不同的原因有不同的解决办法,后面会专门讲。
5. 让FastCopy跑得更稳更快的参数配置
5.1 缓冲区大小该怎么设
缓冲区大小是FastCopy里影响性能最直接的参数之一。它决定了每次读写操作搬运多少数据。设得太小,系统调用次数多,开销大;设得太大,内存占用高,而且在小文件场景下反而浪费。FastCopy默认会根据文件大小自动调整,但在处理大量小文件时,手动设置一个合适的值往往能获得更好的效果。
根据我的实测,对于以照片为主的小文件场景,把缓冲区设置在六十四兆到一百二十八兆之间比较合适。这个范围既能保证每次读写有足够的数据量,又不会因为缓冲区太大导致内存压力。如果你用的是比较老的电脑,内存只有八个G,建议设在三十二兆到六十四兆之间,避免拷贝过程中内存不足。
设置的位置在“选项”里的“缓冲区大小”一栏。你可以选择“自动”,也可以手动输入一个数值。我一般会先用手动设置跑一次,看看速度和稳定性,如果没问题就固定下来。
5.2 线程数的取舍逻辑
线程数决定了FastCopy同时处理多少个文件。线程数越多,并发程度越高,但并不是越多越好。线程数超过硬件能承受的上限之后,反而会因为频繁的上下文切换导致性能下降。
对于固态硬盘到固态硬盘的拷贝,我一般设置八到十六个线程。这个范围能充分利用固态硬盘的并发能力,又不会造成过度的资源竞争。对于机械硬盘参与的拷贝,线程数建议降到二到四个,因为机械硬盘的磁头是物理移动的,并发太高会导致磁头频繁寻道,反而更慢。
FastCopy的线程数设置有一个“自动”选项,它会根据源设备和目标设备的类型自动判断。大多数情况下,自动模式已经够用了。但如果你发现拷贝速度不理想,可以尝试手动调整,找到一个适合你硬件的平衡点。
5.3 错误处理策略的选择
错误处理策略是FastCopy相比系统拷贝最大的优势之一。在“选项”里,你可以设置遇到错误时的行为。常见的选项包括“跳过并记录”“重试指定次数后跳过”“停止拷贝”等。
对于大量小文件的拷贝,我强烈建议选择“跳过并记录”。这样即使有个别文件读取失败,也不会影响整个拷贝任务的进度。拷贝结束后,你可以根据日志里的记录,单独处理那些失败的文件。如果选择“停止拷贝”,一个坏文件就会让整个任务中断,前面拷好的文件虽然还在,但后面的文件就全部搁置了。
还有一个相关的选项是“覆盖方式”。你可以选择“覆盖”“跳过”“重命名”等。对于照片整理场景,我一般选择“跳过已存在的文件”,这样可以避免重复拷贝,节省时间。如果你确定目标文件夹是空的,或者需要强制覆盖,那就选“覆盖”。
5.4 一个我常用的参数组合
经过多次尝试,我总结出了一套比较通用的参数组合,适用于大多数“大量小文件从固态硬盘拷到固态硬盘”的场景。具体如下。
| 参数项 | 设置值 | 说明 |
|---|---|---|
| 操作模式 | 复制 | 只拷贝,不删除源文件 |
| 缓冲区大小 | 一百二十八兆 | 兼顾速度和内存占用 |
| 线程数 | 自动或十二 | 固态硬盘场景下自动通常够用 |
| 错误处理 | 跳过并记录 | 避免单个坏文件阻塞整个任务 |
| 覆盖方式 | 跳过已存在 | 避免重复拷贝 |
| 日志级别 | 详细 | 方便后续排查 |
这套配置在我自己的电脑上跑了两万张照片的拷贝任务,总耗时不到九分钟,没有出现卡死,日志里记录了三个读取失败的文件,后来单独处理了。如果你用的是机械硬盘,把线程数降到四,缓冲区降到六十四兆,其他保持不变。
提示:参数没有绝对的最优解,跟你的硬件配置、文件类型、系统环境都有关系。建议先用默认配置跑一次,如果速度或稳定性不满意,再逐项调整。
6. 那些让我折腾半天的报错和异常
6.1 拷贝到一半提示“路径过长”
这个问题在从多层嵌套的文件夹里拷贝文件时特别容易出现。某些系统对文件路径的总长度有限制,当源路径加上目标路径超过这个限制时,FastCopy会报错。报错信息通常是“路径过长”或者“无法创建文件”。
解决办法有两个。第一个是缩短目标路径,把目标文件夹设在根目录附近,比如直接设在某个盘的根目录下,而不是嵌套很多层。第二个是开启FastCopy的长路径支持选项。在“选项”里有一个“使用扩展路径”或者类似的设置,勾选之后它就能处理超过系统默认限制的路径。
如果这两个办法都不行,那就只能手动把源文件夹的结构扁平化,把嵌套太深的文件先移到浅层目录,再拷贝。这个操作比较麻烦,但能彻底解决问题。
6.2 目标磁盘空间足够却报“空间不足”
这个报错看起来很奇怪,明明目标磁盘还有几百个G,为什么说空间不足?后来我发现,问题出在文件系统上。某些文件系统对单个文件夹内的文件数量有限制,或者对磁盘配额有限制。如果你的目标文件夹已经有很多文件了,再往里拷大量小文件,就可能触发这个限制。
另一个可能的原因是临时文件占用了空间。FastCopy在拷贝过程中会生成一些临时文件,如果临时文件所在的磁盘分区空间不足,也会报这个错。解决办法是把临时目录设置到空间充足的分区上,或者清理一下临时文件。
还有一种情况是磁盘配额被限制了。如果你用的是公司电脑或者学校电脑,管理员可能给你的账户设置了磁盘配额。这种情况下,你需要联系管理员调整配额,或者换一个没有配额限制的磁盘。
6.3 拷贝速度突然掉到零
拷贝过程中速度突然掉到零,然后过一会儿又恢复,这种情况通常跟源设备或目标设备的响应有关。如果是存储卡或者U盘,可能是设备过热导致降速。如果是机械硬盘,可能是遇到了坏道,磁头在反复尝试读取。
遇到这种情况,先观察一下是不是持续性的。如果只是偶尔掉一下然后恢复,问题不大,让它继续跑就行。如果掉到零之后长时间不恢复,那就可能是遇到坏文件了。这时候可以看一下FastCopy的日志,如果日志停在某个文件上不动,基本可以确定是那个文件的问题。你可以手动跳过那个文件,或者停止任务,把那个文件排除之后再重新开始。
还有一种可能是系统进入了休眠或者省电模式,导致存储设备被挂起。检查一下电源管理设置,把“在此时间后关闭硬盘”设为“从不”,避免拷贝过程中硬盘被关闭。
6.4 拷贝完成后文件数量对不上
拷贝完成后发现目标文件夹的文件数量比源文件夹少,这是最让人紧张的情况。先不要慌,按照以下步骤排查。
第一步,看FastCopy的日志。日志里会明确列出失败的文件和失败原因。如果失败原因是“读取错误”,说明源文件有问题;如果是“写入错误”,说明目标位置有问题;如果是“跳过”,说明你设置了跳过已存在的文件,而目标位置确实有同名文件。
第二步,检查是否有隐藏文件。系统默认不显示隐藏文件,但FastCopy会拷贝它们。如果你在源文件夹里看不到隐藏文件,但FastCopy把它们拷过去了,数量就会对不上。在文件夹选项里开启“显示隐藏文件”再对比一次。
第三步,检查是否有文件被过滤掉了。FastCopy支持文件过滤功能,如果你不小心设置了过滤规则,某些文件就不会被拷贝。检查一下“选项”里的过滤设置,确保没有误设。
第四步,如果以上都排除了,那就手动对比一下源和目标的文件列表。可以用一些文件夹对比工具,把两边的文件列表导出,然后做差异分析。这种方式最彻底,但耗时也最长。
7. 把FastCopy用进日常工作流
7.1 配合素材管理流程的用法
对于摄影或者视频从业者来说,FastCopy可以嵌入到日常的素材管理流程里。我的习惯是每次拍摄回来,先把存储卡插上,用FastCopy把整个卡里的内容拷贝到工作盘的“待整理”文件夹。拷贝的时候设置好“跳过已存在”和“跳过并记录错误”,然后就可以去干别的事了。等拷贝完成,检查一下日志,确认没有大问题,再把存储卡格式化。
这个流程的好处是,拷贝过程不需要人工盯着,也不会因为某个坏文件卡住。而且FastCopy的速度比系统拷贝快很多,同样的时间能处理更多的素材。对于需要当天出片的场景,这个时间节省是很实在的。
如果你有多个存储卡需要同时拷贝,FastCopy也支持多实例运行。你可以开多个窗口,每个窗口负责一个卡,同时往不同的目标文件夹拷。不过要注意,同时拷贝多个任务会争抢磁盘带宽,如果源盘和目标盘是同一块物理硬盘,速度反而会下降。最好是源盘和目标盘分开,比如从读卡器拷到固态硬盘,再从另一块固态硬盘拷到备份盘。
7.2 定期备份场景下的自动化思路
FastCopy支持命令行调用,这意味着你可以把它写进批处理脚本或者计划任务里,实现自动化的定期备份。比如你可以设置一个计划任务,每天凌晨两点自动把某个文件夹同步到备份盘上。
命令行的基本格式是:指定FastCopy的可执行文件路径,然后跟上源路径、目标路径、以及各种参数。具体的参数列表可以在帮助文档里找到。这里给一个简单的示例,把源文件夹同步到目标文件夹,跳过已存在的文件,遇到错误记录日志:
FastCopy.exe /cmd=sync /auto_close /force_close /speed=full /src="D:\Photos" /dst="E:\Backup\Photos" /log="E:\Backup\fastcopy_log.txt"这个命令的意思是:以同步模式运行,完成后自动关闭,强制关闭(不弹窗),全速运行,源是D盘的Photos文件夹,目标是E盘的Backup\Photos文件夹,日志写到指定位置。你可以把这个命令保存成一个bat文件,然后加到计划任务里。
注意:同步模式会删除目标文件夹里多余的文件,使用之前一定要确认目标文件夹里的内容都是可以删除的。如果不确定,先用复制模式跑一段时间,确认没问题再换成同步模式。
7.3 和其他工具搭配使用的经验
FastCopy虽然强大,但它只负责拷贝这一个环节。在实际工作中,我通常会把它和其他工具搭配使用,形成一个完整的素材处理流水线。
比如,拷贝之前我会用一些工具检查存储卡的健康状态,看看有没有坏道或者读取异常。拷贝之后我会用校验工具做一次哈希对比,确保数据完整性。整理阶段我会用照片管理软件做去重、分类、打标签。备份阶段我会用FastCopy做增量同步,再用其他备份工具做版本管理。
这些工具各司其职,FastCopy负责的是最基础也最关键的“把数据从A搬到B”这一步。这一步如果做不好,后面的整理和备份都是空中楼阁。所以我在FastCopy的配置上花的时间比较多,确保它在我需要的时候能稳定、快速地完成任务。
7.4 我踩过的几个印象深刻的坑
第一个坑是在拷贝过程中拔存储卡。有一次我以为拷贝已经完成了,没仔细看进度条就把卡拔了。结果实际上还有几百个文件没拷完,拔卡之后FastCopy报了一堆写入错误。虽然源卡里的文件没丢,但目标文件夹里多了一堆不完整的文件,只能全部删掉重来。从那以后我养成了一个习惯:拷贝完成之后,先看日志确认没有错误,再等几秒钟让缓存落盘,然后才拔卡。
第二个坑是目标路径设成了源路径的子目录。有一次我不小心把目标设成了源文件夹里面的一个子文件夹,结果FastCopy开始无限递归拷贝,源文件夹越来越大,差点把磁盘撑爆。幸好发现得早,及时停止了。这个错误的教训是:设置目标路径的时候一定要看清楚,确保目标不在源路径下面。
第三个坑是忽略了文件系统的差异。有一次我从一个支持大文件系统的硬盘往一个老式的文件系统拷贝,单个文件超过那个文件系统的限制,FastCopy报错说“文件太大”。后来查了一下才知道,那个老文件系统不支持超过四G的单个文件。解决办法是把目标盘格式化成支持大文件的文件系统,或者把大文件分割之后再拷贝。
第四个坑是同时运行了太多任务。有一回我为了赶时间,同时开了五个FastCopy窗口,每个窗口拷不同的内容。结果磁盘带宽被抢光,每个任务都慢得像蜗牛,总耗时反而比一个一个拷更长。后来我学乖了,同一时间最多开两个任务,而且尽量让源盘和目标盘分开。
8. 关于这个工具的一些零散心得
FastCopy这个工具我用了好几年了,从最初只是拿它当系统拷贝的替代品,到后来慢慢研究它的各种参数和用法,再到现在把它嵌进日常工作流里。它不是什么高大上的软件,界面甚至有点简陋,但它在“大量小文件拷贝”这个具体场景下的表现,确实比系统自带的工具强太多。
如果你只是偶尔拷贝几个文件,那用系统自带的就够了,没必要折腾。但如果你经常需要处理成千上万个小文件,比如照片、代码、文档、素材,那花点时间把FastCopy配置好,绝对是一笔划算的投资。它节省的不只是拷贝时间,还有你盯着进度条发呆的时间、处理报错的时间、以及因为拷贝失败而重做的时间。
最后分享一个小技巧:FastCopy的配置文件是可以导出的。你可以在调好一套参数之后,把配置导出成一个文件,下次换电脑或者重装系统的时候直接导入,不用重新设置。这个功能在“选项”里能找到,具体位置各个版本可能略有不同,但一般都在设置菜单的底部。导出之后把配置文件跟FastCopy主程序放在一起,换电脑的时候一起拷过去就行。