使用 robocopy 复制后磁盘大小不同

使用 robocopy 复制后磁盘大小不同

robocopy我使用命令开关复制了一个文件夹/mt /s /e /copyall /np /nfl /ndl

当我导航到 -> 右键单击​​ -> 属性时,我可以看到size on disk

源文件夹在磁盘上显示大小为 1.1GB,而目标文件夹则小得多。两个目录都位于使用 Windows 软件镜像的 REFS 格式的系统中。

这是否应该提醒我复制过程中出现问题?

磁盘大小差异: 磁盘大小差异

答案1

“磁盘大小”指定文件占用多少磁盘空间。它很大程度上取决于文件系统,尤其是簇大小。

长度为 8000 字节的文件占用两个 4Ki 簇大小的簇,但仅占用一个 8Ki 或 64Ki 簇大小的簇(磁盘上的大小分别为 8192、8192 和 65536 字节)。

如果文件大小完全随机,则每个文件都会浪费文件系统中的半个簇。但是,簇数越少或越多,文件系统开销就越大,并且可能会增加文件碎片。

8000 字节的文件在 4Ki 或 8Ki 簇中浪费了未使用的 192 字节,但在 64Ki 簇中浪费了 57536 字节。

答案2

还应该注意(尽管这可能与本案无关)Robocopy 不保留 NTFS 压缩,因此如果源文件夹中有压缩文件(通常显示为蓝色),目标文件夹将明显变大。对于“稀疏”文件,情况可能相同,也可能不同。

SynchronizeIt 是我经常使用的文件复制工具:与 Robocopy 类似,它保留所有时间戳(包括目录时间戳,这在 Windows 工具中非常罕见),并且保留 C 属性,即 NTFS 压缩。但有一个警告:它首先复制未压缩的文件,然后应用 NTFS 压缩,这会增加复制时间。当前官方版本也有一个错误:如果输入文件具有“稀疏”属性,则副本会被损坏(实际上只复制了第一个簇,其余簇最终为空)。即使对于不知情使用“稀疏”NTFS 功能的人来说,这也可能是一个问题,因为许多下载管理器或文件共享应用程序默认将其设置为最小化部分文件的分配大小。2015 年,作者向我提供了一个修正版本,但由于某种原因从未公开过(可用版本自 2009 年以来就没有更新过)。

WinHex 有一项名为“复制目录”的功能,可以直接将压缩文件复制为压缩文件,但不会保留时间戳。之后在同一目录上应用 Robocopy /CREATE /DCOPY:T 可以非常快速地更正所有时间戳,而无需重新复制文件。

相关内容