windows 无法使用“copy”、“robocopy”甚至“eseutil”复制大数据库文件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2201459/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Can't copy big DB files using "copy", "robocopy" or even "eseutil"
提问by skb
I am having a problem copying large DB files (~100GB) in an automated script I am trying to write for a Windows Server. I have tried using "copy", "robocopy", and even "eseutil".
我在尝试为 Windows Server 编写的自动脚本中复制大型 DB 文件(~100GB)时遇到问题。我曾尝试使用“copy”、“robocopy”,甚至“eseutil”。
My script is running on a Windows 2008 Server (destination of the file) and is pulling from a Windows 2003 Server (source of the file).
我的脚本在 Windows 2008 Server(文件的目的地)上运行,并且从 Windows 2003 Server(文件的来源)中提取。
I have already tried changing the IRPStackSize registry setting, as well as both of the ones in the HKLM/SYSTEM/CurrentControlSet/Control/SessionManager/MemoryManagement hive. This was all done on the 2008 server and rebooted with no effect. Does anyone have a good workaround?
我已经尝试更改 IRPStackSize 注册表设置,以及 HKLM/SYSTEM/CurrentControlSet/Control/SessionManager/MemoryManagement 配置单元中的两个设置。这一切都是在 2008 年服务器上完成的,并且重新启动没有任何效果。有没有人有好的解决方法?
Copy and Robocopy both give me this:
Copy 和 Robocopy 都给了我这个:
Not enough server storage is available to process this command.
没有足够的服务器存储空间来处理此命令。
Eseutil.exe gives me this:
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>
回答by Nathan Ranger
I figured out how to fix this!
我想出了如何解决这个问题!
Use a LINUXmachine to samba mount the source and destination directories/drives and copy them via the network. Personally, I use rsync since it will recreate the directory structure and only copy files that aren't there or are different. Thus, you can stop and/or restart at anytime without losing your progress.
使用LINUX机器 samba 挂载源和目标目录/驱动器并通过网络复制它们。就我个人而言,我使用 rsync,因为它会重新创建目录结构并且只复制不存在或不同的文件。因此,您可以随时停止和/或重新开始而不会丢失进度。
I can't believe we're still paying Microsoft for this trash of an OS. I had similar problems and there seems to be no fix other than this one. Its a little slow but not nearly as slow as doing on natively since it will fail EVERY TIME.
我不敢相信我们还在为这个垃圾操作系统付钱给微软。我遇到了类似的问题,除此之外似乎没有其他解决方法。它有点慢,但并不像本地那样慢,因为它每次都会失败。
At one point I thought robocopy would surely do it using the /IPG:xx option (InterPacketGap in milliseconds). Nope. It just PROLONGS the stack overflow and remote console lockout. I thought, maybe, Microsoft got it right with this OS. So much for Win2K8 being solid. Ugh! Windoze is for workstations. For servers you need a server OS not tinkertoy code.
有一次,我认为 robocopy 肯定会使用 /IPG:xx 选项(以毫秒为单位的 InterPacketGap)。不。它只会延长堆栈溢出和远程控制台锁定。我想,也许,微软在这个操作系统上做得对。Win2K8 的稳定性就这么多。啊! Windoze 适用于工作站。对于服务器,您需要一个服务器操作系统而不是 tinkertoy 代码。
回答by Greg Joiner
Use the XCOPY
with the /J option
to avoid network failures of large files. This will ONLY works in 2008 R2 and Windows 7 though. This solved my timeout issue.
与XCOPY
一起使用/J option
可避免大文件的网络故障。不过,这仅适用于 2008 R2 和 Windows 7。这解决了我的超时问题。
Please check.
请检查。
回答by Vincent C
The format for the second part of eseutil should be:
eseutil 第二部分的格式应该是:
/d\\server\folder\filename
/d\\server\folder\filename
Notice there is no space after the /d
注意后面没有空格 /d
回答by EKS
Have you tried to copy the files with the old fasion way of drag and drop?
您是否尝试过使用旧的拖放方式复制文件?
I would do this once, to make sure its not your network failing. Make sure that works, and then try look at other solutions.
我会这样做一次,以确保它不是您的网络故障。确保有效,然后尝试查看其他解决方案。
1) Make sure your destination drive, is NTFS and NOT Fat32.
2) Check when its failing to copy, is it always at the same point? ( IE if it always failing after 2gb )
1) 确保您的目标驱动器是 NTFS 而不是 Fat32。
2) 检查何时复制失败,是否总是在同一点?(IE 如果它在 2gb 之后总是失败)
回答by Yada
Have you tried xcopy
? It works better for large files and recursive copy. doc
你试过xcopy
吗?它更适用于大文件和递归复制。 文档
Also, from my own experience working with network drives and command line is a pain and buggy. It is also a good idea to map the network drive and use drive letter such as z:\
此外,根据我自己使用网络驱动器和命令行的经验,这是一种痛苦和错误。映射网络驱动器并使用驱动器号如 z:\
xcopy /K /R /E /I /S /C /H /G /X /Y s:\*.* t:\
/K Copies attributes. Normal Xcopy will reset read-only attributes.
/R Overwrites read-only files.
/E Copies directories and subdirectories, including empty ones.
/I If destination does not exist and copying more than one file, assumes that destination must be a directory.
/S Copies directories and subdirectories except empty ones.
/C Continues copying even if errors occur.
/H Copies hidden and system files also.
/Y Suppresses prompting to confirm you want to overwrite an existing destination file.
/G Allows the copying of encrypted files to destination that does not support encryption.
/X Copies file audit settings (implies /O).
/K 复制属性。普通 Xcopy 将重置只读属性。
/R 覆盖只读文件。
/E 复制目录和子目录,包括空目录。
/I 如果目标不存在并且复制多个文件,则假定目标必须是一个目录。
/S 复制目录和子目录,除了空目录。
/C 即使发生错误也继续复制。
/H 也复制隐藏文件和系统文件。
/Y 禁止确认您要覆盖现有目标文件的提示。
/G 允许将加密文件复制到不支持加密的目标。
/X 复制文件审核设置(隐含 /O)。