我有在Windows Server中支持大文件的计划作业,完成大概需要2个小时。
现在,我只在.bat中使用复制命令,并将大文件复制到另一个文件夹中。
我想知道是否有比复制命令更有效的方式来备份大文件(大约90GB)。 例如,编写一个c ++程序来复制文件而不是复制命令。
非常感谢。
您正在使用的复制命令可能已经用C ++或C编写,甚至是用较低级别的例程编写,所以您不会仅仅使用这些语言中的现有复制函数或方法就能看到速度的提升。
你将被磁盘绑定。 最有可能的语言/机制将在最后(系统调用)是相同的。 最快的方法是将磁盘升级到更高的RPM和/或使用分条RAIDconfiguration。
但请确保您在两个单独的物理驱动器之间进行复制。 (即从一个读取并写入另一个)。
如果可能的话,保存更改(deltas),而不是整个文件,可能每个星期都做一个完整的备份。 另外,如果这些文件非常适合压缩(例如纯文本),那么在写入磁盘之前进行压缩将会快得多。
如果您需要保留文件ACL,请考虑xcopy或robocopy。 我用它来镜像从2个不同的磁盘(400GB + 200GB)几乎600 GB的数据到备份磁盘。 每天的变化几乎是2GB(主要是小文件),并在45分钟内完成复制。 初始镜像将花费一些时间与您的数据成正比。
如果不需要保留ACL,Terracopy会更快
如果问题是备份文件时的两小时停机时间窗口,则可能会:
1.将文件移动到同一磁盘/arrays上的其他位置。
如果你不穿过另一个磁盘,移动应该是几乎立即。 需要磁盘空间。 移动之后,您应该能够重新启动写入这些文件的进程,只需要几分钟的时间。 您备份移动的文件。
2.重命名文件
这些文件保留在相同的位置,但名称不同。
您可以重命名文件。 需要磁盘空间。 移动之后,您应该能够重新启动写入这些文件的进程,只需要几分钟的时间。 您备份重命名的文件。
3.备份之前将文件归档
如果可以压缩这些大文件,则可以同时备份这些大文件,并且可以使用更less的磁带来节省双倍的费用。 一定要select一个好的归档程序。