我在尝试为Windows Server编写的自动脚本中复制大型DB文件(~100GB)时遇到问题。我尝试过使用“复制”,“robocopy”,甚至“eseutil”。
我的脚本在Windows 2008 Server(文件的目标)上运行,并从Windows 2003 Server(文件源)中提取。
我已经尝试更改IRPStackSize注册表设置,以及HKLM / SYSTEM / CurrentControlSet / Control / SessionManager / MemoryManagement配置单元中的两个注册表设置。这一切都在2008服务器上完成,并重新启动,没有任何效果。有没有人有一个好的解决方法?
复制和Robocopy都给了我这个:
没有足够的服务器存储空间来处理此命令。
Eseutil.exe给了我这个:
H:\TempSQLBackups>eseutil /y \\SRC_SERVER\SQL_BACKUPS\BIG_DB.BAK /d H:\TempSQLBackups\BIG_DB.bak
Extensible Storage Engine Utilities for Microsoft(R) Exchange Server
Version 08.01
Copyright (C) Microsoft Corporation. All Rights Reserved.
Initiating COPY FILE mode...
Source File: \\SRC_SERVER\SQL_BACKUPS\BIG_DB.BAK
Destination File: H:\TempSQLBackups\BIG_DB.bak
Copy Progress (% complete)
0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
........FAILURE: ReadFile: The specified network name is no longer available.
Operation terminated unsuccessfully after 11336.16 seconds.
H:\TempSQLBackups>
答案 0 :(得分:1)
我想出了如何解决这个问题!
使用 LINUX 计算机samba安装源目标/目标目录/驱动器并通过网络复制它们。就个人而言,我使用rsync,因为它将重新创建目录结构,只复制不存在或不同的文件。因此,您可以随时停止和/或重新启动,而不会丢失进度。
我无法相信我们仍在向微软支付操作系统的垃圾费用。我有类似的问题,似乎没有其他解决办法。它有点慢但不像在本地做的那么慢,因为它会每次都失败。
有一次,我认为robocopy肯定会使用/ IPG:xx选项(InterPacketGap,以毫秒为单位)。不。它只是扩大堆栈溢出和远程控制台锁定。我想,也许,微软用这个操作系统做对了。 Win2K8非常稳固。啊! Windoze适用于工作站。对于服务器,您需要服务器操作系统而不是代码。
答案 1 :(得分:1)
将XCOPY
与/J option
一起使用可以避免大文件出现网络故障。这仅适用于2008 R2和Windows 7。这解决了我的超时问题。
请检查。
答案 2 :(得分:0)
您是否尝试使用旧的传统拖放方式复制文件?
我会这样做一次,以确保它不是你的网络失败。确保它有效,然后尝试查看其他解决方案。
1)确保您的目标驱动器是NTFS而不是Fat32 2)检查何时无法复制,是否始终在同一点? (IE如果在2gb之后总是失败的话)
答案 3 :(得分:0)
你试过xcopy
吗?它适用于大型文件和递归副本。 doc
另外,根据我自己的经验,使用网络驱动器和命令行是一个痛苦和错误。映射网络驱动器并使用驱动器号如z:\
也是一个好主意xcopy /K /R /E /I /S /C /H /G /X /Y s:\*.* t:\
/ K复制属性。普通Xcopy将重置只读属性。
/ R覆盖只读文件。
/ E复制目录和子目录,包括空目录。
/ I如果目标不存在并复制多个文件,则假定目标必须是目录。
/ S复制除空的目录和子目录。
/ C即使发生错误也继续复制。
/ H也复制隐藏文件和系统文件。
/ Y禁止提示您确认是否要覆盖现有目标文件。
/ G允许将加密文件复制到不支持加密的目标。
/ X复制文件审核设置(隐含/ O)。
答案 4 :(得分:0)
eseutil第二部分的格式应为:
/d\\server\folder\filename
请注意,/d
之后的空格