问题 我们希望将我们的关键文件从多个networking共享备份到可移动硬盘。 我们希望自动备份,所以我们不必记得运行它。 它需要在一夜之间完成。 此外,我们希望能够保留每个文件的多个版本,以便我们更容易地退出用户的错误。 背景信息 我在一个大型的基于Windows的企业中工作,负责所有的备份。 他们的备份面向灾难恢复,而不是用户错误,并要求上级pipe理层批准任何非灾难恢复。 有好几次我们注意到我们的备份失败了,我们没有通知。 我没有服务器或桌面的pipe理权限。 我们正在尝试备份大约240千兆字节的大约198,000个文件。 这些文件很less改变。 我们的备份驱动器是一兆兆字节。 我的build议解决scheme 我想要做的是使用带有/ mir选项的Robocopy和Mercurial SCM编写batch file来存储文件的所有版本。 在每次执行Robocopy之前,我都会先执行hg add,然后执行hg commit来保存当前状态,然后创build文件结构的镜像副本。 问题是/ mir将删除源文件中不存在的每个文件夹,并且Mercurial将存储库存储在目标文件夹中的.hg文件夹中。 有人知道我怎么能说服Mercurial存储在其他地方的.hg文件夹,或说服Robocopy不要从目的地删除它? 我试图避免写一个自定义程序来做复制。
我试图以一种排除所选文件夹下的所有子文件夹的方式来使用Robocopy。 换句话说,我只想定位一个文件夹,然后只复制其中的文件,而不是子文件夹。 有没有办法做到这一点?
/ MON:1选项工作得非常好,只要发生更改就可以运行目录扫描。 如果robocpy每10分钟从Windows调度程序运行,这是不可能做到的。 有没有办法来运行 robocopy \\192.168.1.100\D$\RoboCopyTest \\192.168.1.200\D$\RoboCopyTest /FFT /Z /ETA /E /XA:H /R:0 /W:1 /XO /NP /NDL /NFL /MON:1 当Windows启动时自动执行命令,并且如果命令由于某种原因被停止 – 重新启动它,并通知Windows事件日志:由于某种原因命令已被停止。 带有/ MON:n选项的robocpy命令只有在文件有N个更改时才会自行运行。
我们的客户需要通过FTP将指定的文件从networking传输到我们的networking。 每当指定的文件发生更改时,都必须自动调用传输。 为此,RoboCopy是完美的。 但是,RoboCopy不支持传输到FTP地址。 所以,我想将我们的FTP站点映射到客户端服务器上的一个驱动器号。 我发现FtpUse非常适合将FTP映射到驱动器盘符。 映射按预期工作,我可以在Windows资源pipe理器中看到FTP站点的内容 – 我也可以将数据写入映射的FTP驱动器。 所以,假设我已经映射了FTP站点来使用以下命令在本地机器上驱动Q: ftpuse Q: [ftp address] [password] /USER:[username] 并尝试使用此命令设置RoboCopy: robocopy [source dir] Q:\ *.xls *.xlsx /COPY:DAT /LOG+:"[LogDir]\FtpCopyLog.txt" /V /NP /MON:1 /MOT:1 /R:10 /W:30 当RoboCopy运行时,它会失败并显示以下错误消息: 错误87(0x00000057)复制文件[源目录] \ test2.xlsm参数不正确 我试图映射驱动器并在samme用户帐户下运行RoboCopy命令,但似乎没有解决问题。 希望有人能帮忙。 任何帮助将不胜感激。
我写了一个快速脚本来比较跨服务器的文件差异,然后提供是否镜像更改的提示。 如果没有任何更改,我希望它智能地不提示复制。 剧本: robocopy "$cSource" "$cDestination" /E /L /FP $cDecision = Read-host "Continue = 1, anything else = Stop" if ($cDecision -eq "1") { robocopy "$cSource" "$cDestination" /MIR /FFT /Z /W:5 /MT:64 /XX /log:$cLogLocation Invoke-item $cLogLocation } else { Write-host "Quit!" } 如果Robocopy报告“不匹配”,“失败”,“额外”和“复制”为0,我希望Powershell不要求继续。 对于这个特殊的项目来说这不是很重要,但是我可以考虑一些这样的检查的有用的用途。 谢谢!
我们正在退役我们的旧文件服务器的急需升级。 不言而喻,这需要尽可能无缝,以尽可能less地影响最终用户。 我们正在从Server 2000升级到Server 2008。 我一直在和这个顾问合作,努力使这个工作顺利,但是他是一个很忙的人,而且我发现他的工作有一些漏洞。 他build议我们使用Robocopy将旧服务器上的所有文件复制到新服务器上,然后在新服务器启动的前一天再次运行该命令,以复制自原始副本以来发生更改的任何文件。 我们已经完成了第一个副本,第一个主要的故障是没有任何权限已经结转。 这不是世界的尽头,考虑到我们正在复制几乎所有的数据,我相信我手动重新执行权限的速度会更快,而不是用正确的开关重新复制一切。 我不想依赖我的顾问,而是想把事情交给我自己。 这是他推荐的命令(从新文件服务器执行)。 Robocopy \\ oldserver \ Data E:\ DATA / MIR / FFT / Z / XA:H / W:5 在我们上线之前,是否有更简单的方法来复制所有这些数据(同时保留权限)?
我以为我会尝试RoboCopy镜像文件夹的内容到另一个硬盘。 而且看起来像是有效的。 但是,出于某种原因,要查看目标文件夹我必须启用显示隐藏的文件,文件夹和驱动器,并禁用隐藏受保护的操作系统文件 。 为什么是这样? 源文件夹和目标文件夹最初都是可见的和普通的目录。 当我打开该目标文件夹的属性时, 隐藏属性甚至被禁用。 这里发生了什么? 是因为我在pipe理员命令提示符下运行它吗? 或者是我select修饰符的问题? 还是robocopy真的只是这样工作? robocopy E: I:\E /COPYALL /E /R:0 /MIR /B /ETA 更新:试图复制另一个驱动器到另一个文件夹,我得到了同样的事情发生在那里。 但是,当我尝试将文件夹复制到不同的文件夹时,目标文件夹保持正常。 难道是因为我复制一个驱动器? 如果是这样,我怎样才能防止这种情况发生? 因为我真的想复制整个驱动器…
我正在尝试以下命令: robocopy "x:\dir" "y:\dir" /mir /z /tee /fft /nfl /ndl /eta /log:"x:\path to logs\12-15-11 01 file with spaces.txt" 我得到这个错误: ERROR : Invalid Parameter #10 : "/log:x:\path to logs\12-15-11 01 file with spaces.txt" 编辑#1 原来上面的命令是有效的,我的路上有一个错字。 如果你有一个包含空格的path,你可以把它们提供给robocopy的/ log开关,如下所示: /log:"c:\path to a file\robocopy.log"
我试图无声地复制一些文件。 现在,我有robocopy将所有内容都放入一个日志文件中,这很好,但是完成之后,会打印Log File: C:\<logfiledestination> 。 我的命令是这样的: robocopy source destination /mir /xd .svn /log:log.txt /np >nul 2>&1 。 从网上search,我认为>nul 2>&1将阻止任何东西出现。 我非常新的Windows命令行,所以如果我做错了什么,请让我知道! 编辑:我在那里有一个幻影半句话,我错过了。 现在修正了。
我需要使用robocopy来排除其path包含具有特定名称的目录的任何文件。 例如,“酒吧”: c:\foo\bar\a.txt c:\bar\c.txt d:\baz\bar\flub\d.txt 应该被排除,但不是 c:\foo\barf\b.txt 这是我试过的东西 – 每个都被robocopy拒绝了: /XD \bar\ /XD *\bar\* /XD *^\bar^\* 有任何想法吗?