![复制数据的替代方法:](https://linux22.com/image/1427368/%E5%A4%8D%E5%88%B6%E6%95%B0%E6%8D%AE%E7%9A%84%E6%9B%BF%E4%BB%A3%E6%96%B9%E6%B3%95%EF%BC%9A.png)
我有一个大约 55GB 的大型 virtualBox 虚拟机。它目前在我的外部硬盘上。问题是我无法将其从外部 USB 硬盘复制到我的电脑上。大约 75% 时,复制失败。我也无法克隆它,因为它试图从硬盘克隆到我的电脑。这一定是由于我的外部硬盘的一些限制,尽管我不能确定。它只有一年的历史。我现在唯一能想到的就是将它分成每 25GB 的块,然后将其复制过来并重新合并为一个。有人有其他我可以尝试的选择吗?如果文件拆分是唯一的选择,您会推荐哪种文件拆分器来拆分和合并大型虚拟机文件?
答案1
您可能使用其他程序成功复制了 VM 文件夹。如果不行,您可以始终对 VM 文件夹进行拆分存档,分块复制存档,然后提取它。
复制数据的替代方法:
使用 Xcopy 复制目录:
xcopy “C:\vmfolder” “D:\vmfolder” /E /V /I /F /H /-Y /J
替换C:\vmfolder
VM 文件夹的位置以及D:\vmfolder
您想要复制它的位置。
/E
复制目录、子目录及其中的所有文件。
/V
随后将验证文件大小。
/I
允许指定目标目录。
/F
复制时显示正在复制的内容。
/H
复制隐藏文件和系统文件。
/-Y
提示您是否要覆盖现有文件。
/J
不使用输入/输出缓冲区。非常适合处理大文件。
以下是一个例子:
xcopy “E:\虚拟机\VMware Player\Ubuntu 14.04.1 - 核心 X86-64” “F:\Temp\Ubuntu 14.04.1 - 核心 X86-64” /E /V /I /F /H /-Y /J
使用 Robocopy 复制目录:
robocopy “C:\vmfolder” “D:\vmfolder” /E /J /SL /MT[:1] /V /FP /ETA /TEE
替换C:\vmfolder
VM 文件夹的位置以及D:\vmfolder
要将其复制到的位置。您可以保留/MT[:1]
原样,或者如果您的计算机可以处理更多线程,您可以增加它。
/E
复制子目录。
/J
输入/输出不使用缓冲区,这对于大文件很有帮助。
/SL
如果使用符号链接,请复制链接而不是目标。
/MT[:n]
多线程复制;最小线程数为 1,最大线程数为 128。使用您的系统可以处理的数字。
/V
详细输出。
/FP
将完整路径添加到输出。
/ETA
估计完成时间。
/TEE
除了日志文件之外,还输出到控制台。
以下是一个例子:
robocopy “E:\虚拟机\VMware Player\Ubuntu 14.04.1 - 核心 X86-64” “F:\Temp\Ubuntu 14.04.1 - 核心 X86-64” /E /J /SL /MT[:1] /V /FP /ETA /TEE
创建档案、复制并提取
使用 7-zip 命令行版本创建分割存档:
C:
替换C:
您希望保存档案的驱动器。
cd“C:\保存位置”
替换C:\savelocation
驱动器上您希望保存档案的位置。这是因为 7zip 不支持在创建档案时指定输出路径(尽管在使用 进行提取时支持e
)。
7za a-tzip-r-mx0-mmt-v5g“vmfolder.zip”“C:\vmfolder”
替代vmfolder.zip
档案名称和C:\vmfolder
VM 文件夹路径。
a
将文件添加到档案。
-r
递归添加子目录。
-mx0
将压缩设置为无。
-mmt
启用多线程。
-v
将档案分成若干块,g
为千兆字节,m
为兆字节,k
为千字节,b
为字节。
t
选择存档类型,zip
适用于 zip 存档。
例如:
埃:
cd“E:\虚拟机\VMware Player”
7za a -tzip -r -mx0 -mmt -v300m “Ubuntu 14.04.1 - 核心 X86-64.zip” “E:\Virtual Machines\VMware Player\Ubuntu 14.04.1 - 核心 X86-64”
使用 Xcopy 复制文件:
xcopy “C:\savelocation*.zip*” “D:\savelocation” /V /I /F /H /-Y /J
替换C:\savelocation
档案的位置以及D:\savelocation
您想要复制它们的位置。
/V
随后将验证文件大小。
/I
允许指定目标目录。
/F
复制时显示正在复制的内容。
/H
复制隐藏文件和系统文件。
/-Y
提示您是否要覆盖现有文件。
/J
不使用输入/输出缓冲区。非常适合处理大文件。
例如:
xcopy “E:\Virtual Machines\VMware Player*.zip*” “F:\test” /V /I /F /H /-Y /J
使用 7-zip 命令行版本提取分割存档:
答案:
替换D:
您想要将档案提取到的驱动器。
cd“D:\提取位置”
替换C:\extractionlocation
您想要提取到的驱动器上的位置。
7za x -mmt “D:\savelocation\vmfolder.zip.001”
替代D:\savelocation\vmfolder.zip.001
档案的位置。当 7-zip 创建分割档案时,它会将 、 等附加001
到002
单独的部分。
x
正常提取文件和文件夹。
-mmt
启用多线程。
例如:
F:
cd“F:\测试”
7za x -mmt “F:\虚拟机\VMware Player\Ubuntu 14.04.1 - 核心 X86-64.zip.001”
笔记:
- 高负载下文件传输失败可能表示驱动器功率不足。
- 7-zip 有两个版本:7-zip 和 7-zip 命令行版本。7-zip 仅为 GUI,而 7-zip 命令行版本仅为 CLI。
答案2
通常情况下,复制 55GB 的文件不会有问题,所以你可能需要解决这个问题。我记得有人必须关闭省电功能,这样电脑在复制时才不会进入睡眠模式。
答案3
您可以尝试使用 HJsplit (http://www.hjsplit.org/)。它是免费的,并且可以转储(无需安装)。
脚步:
- 创建一个与 VM 文件夹同名的新文件夹,但位于您希望 VM 所在的驱动器上。
- 将 VM 文件夹中的所有小文件复制到新文件夹。
- 下载 HJsplit,并使用它来分割和重新合并较大的文件。
- 运行 HJsplit
- 选择
Split
- 选择输入文件、输出位置和分割大小,然后单击
start
。对需要分割的每个文件重复此操作。它可能“似乎”挂在标记100%
处,但这只是一个错误,它会告诉您第一个文件的 100%,然后不计算其余部分;程序仍在运行。 - 拆分过程完成后,浏览拆分文件,然后将它们复制到所需的驱动器,但不要将它们放入新文件夹中。
- 在 HJsplit 中单击
Join
。 - 浏览输入文件,它将是第一部分,它将以 结尾
.001
。浏览输出位置,它将是您之前创建的新文件夹,其中包含所有复制的小文件。最后按start
。您需要对拆分的所有文件重复此操作。 - 在 HJsplit 中单击
Checksum
。 - 浏览原始文件,然后单击
start
。它可能“似乎”在 100% 时挂起,但它仍在工作。您将获得一个校验和,并使用另一个 HJsplit 实例对新文件夹中的文件重复该过程。 - 校验和应该匹配,如果不匹配则说明您的文件不相同!
笔记:
- HJsplit 拆分大文件需要一段时间。我在一个 5.5GB 左右的文件上进行了测试,大约需要 20 分钟;连接过程更快,校验和过程相当于油漆干燥。
- 您还可以使用比较功能来验证您的文件是否相同。