我正在尝试通过网络复制大型数据库备份文件。
传统的程序复制或xcopy失败,导致不同的二进制文件。也试过robocopy不带参数,结果失败。刚刚robocopy使用/zb参数(重新启动和备份模式)进行了另一次尝试。花费了更长的时间,但最终取得了成功。
我的问题是,备份模式真的旨在复制大/备份文件吗?网上搜了一下,没找到明确的答案。如果任何有经验的用户能给我一个提示或更好的解决方案,我将不胜感激。
我在这里寻找有关 Robocopy 算法如何确定文件是否已更改的详细信息。例如,如果我使用 /mir 参数,Robocopy 必须确定哪些文件已更改,哪些未更改。它是否使用修改后的时间戳或文件大小,散列所有的组合?
有趣的是,它在文档中只字未提。
我有一个 robocopy 脚本来备份我们每晚运行的 Kiln 存储库,它看起来像这样:
robocopy "$liveRepoLocation" "$cloneRepoLocation" /MIR /MT /W:3 /R:100 /LOG:"$backupLogLocation\BackupKiln.txt" /NFL /NDL /NP
Run Code Online (Sandbox Code Playgroud)
在输出中,有大量包含“额外文件”的行,如下所示:
*EXTRA File 153 E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fdt
*EXTRA File 12 E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fdx
*EXTRA File 128 E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fnm
*EXTRA File 363 E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.frq
*EXTRA File 13 E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.nrm
Run Code Online (Sandbox Code Playgroud)
此外,底部还有数百行只包含“100%”,如下所示:
100%
100%
100%
100%
100%
100%
100%
Run Code Online (Sandbox Code Playgroud)
除了使日志文件变得庞大(Kiln 存储库中有很多文件夹/文件)之外,时不时地扫描日志以查看是否一切正常也很烦人。
我已经尝试了我能想到的所有开关组合(当前开关在命令上方列出),但似乎都没有隐藏这些!
我正在尝试运行 robocopy/MOVE命令,但排除了几个用/XD标志指定的子目录。
robocopy ".\CurrentDir" ".\NewDir" /XD ".\CurrentDir\SubDir1" ".\CurrentDir\SubDir2" /E /MOVE
Run Code Online (Sandbox Code Playgroud)
不幸的是,它忽略了该/XD选项并移动了所有内容。如果我对所有内容都使用绝对路径,它可以正常工作,但我需要它具有灵活性。有什么办法可以让它与相对路径一起工作吗?
Robocopy 有一个/J推荐用于复制大文件的命令行选项(它使用无缓冲 I/O 进行复制)。
有什么(如果有)缺点?默认情况下未启用的任何原因?(这就是让我认为可能存在缺点的原因。)
windows 工具robocopy有一个命令行开关/NOOFFLOAD。这个开关实际上有什么作用,在什么情况下我会使用它?
开关的文档说
/NOOFFLOAD :: copy files without using the Windows Copy Offload mechanism.
Run Code Online (Sandbox Code Playgroud)
对“Windows 复制卸载机制”的进一步研究导致了此 msdn 文档,但我无法理解禁用卸载实际上会产生什么影响。
如果网络文件共享位于使用“窗口复制卸载”的服务器上,那么/NOOFFLOAD在复制过程中使用有什么明显的好处/缺点?
例如,它会增加或减少服务器上的负载,还是以其他资源为代价加快传输速度?
windows command-line robocopy command-line-arguments windows-10
Robocopy 预装了 Windows 7。我过去用过很多次。我尝试将文件夹复制到远程共享
robocopy c:\source "\\server\share\path" /s /r:2 /w:2`
Run Code Online (Sandbox Code Playgroud)
结果我被拒绝了。使用资源管理器,我可以将文件复制到此共享。我打开了一个具有管理员权限的命令提示符,结果相同。该共享是公共读/写。
编辑我已成功将驱动器号映射到共享,但 robocopy 仍然失败
编辑 我添加了 /B 开关但没有成功。确切的错误是:
2009/09/26 20:43:14 ERROR 5 (0x00000005)
Accessing Destination Directory \\drobo\Drobo\fotos\__NEW\Ericsson\
Run Code Online (Sandbox Code Playgroud) networking windows-7 troubleshooting file-management robocopy
我试图在 Windows 7 中获取 robocopy 以生成 Unicode 日志,因为我有带有 Unicode 字符的文件。我使用的命令:
robocopy C:\mysource D:\mydest /mir /unilog:backup.log /tee
Run Code Online (Sandbox Code Playgroud)
文件副本有效并且屏幕输出正确,日志文件本身只包含胡言乱语。这与我使用命令提示符还是 Powershell 无关。
是什么赋予了?难道我做错了什么?
Robocopy 不复制根文件夹及其时间戳 - 它复制所有子目录和文件(当设置了适当的选项时)并且似乎没有选项/参数告诉 Robocopy 您想要根文件夹本身及其时间戳或属性也可以逐字复制。
所以说我想复制 C:/Brushes
Robocopy 会将其所有子目录和文件复制到目标中,但不会复制 Brushes 文件夹本身,以及所有关联的属性和时间戳。
你明白我在问什么吗?这是非常基本的,而 Robocopy 似乎缺乏它的选项。人们以前在各种论坛上提出过这个问题,但就我而言,没有人回答这个问题。

robocopy ×10
windows ×5
backup ×1
buffer ×1
command-line ×1
io ×1
networking ×1
unicode ×1
windows-10 ×1
windows-7 ×1