Robocopy 可以与 refs 文件系统配合使用,以提高数据复制和同步的效率和可靠性
Posted suv789
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Robocopy 可以与 refs 文件系统配合使用,以提高数据复制和同步的效率和可靠性相关的知识,希望对你有一定的参考价值。
Robocopy 可以与 refs 文件系统配合使用,以提高数据复制和同步的效率和可靠性。
Refs 是 Windows Server 2012 R2 引入的一种新型文件系统,具有高可靠性、高速度、高扩展性等特点。与 NTFS 不同,Refs 文件系统具有更高的性能和更好的可靠性,因此在大数据环境中使用 Robocopy 进行数据复制和同步时,可以提供更高的效率和更好的数据完整性。
Robocopy 的技术方案包括以下内容:
- 使用 /mt 命令行选项设置多线程复制,以利用 refs 文件系统的并发优势。
- 使用 /dcopy:T 命令行选项进行文件复制,以利用 refs 文件系统的传输优势,提高复制速度和可靠性。
- 使用 /FFT 命令行选项将时间戳舍入到两秒钟,以避免由于时间戳精度不匹配而导致的文件比较错误。
- 避免在快照卷上运行 Robocopy,因为快照卷上的文件可能没有正确的时间戳或权限信息。
在使用 Robocopy 与 refs 文件系统进行数据复制和同步时,还需要注意以下要点:
- 必须在 Windows Server 2012 R2 或更高版本上使用 refs 文件系统。
- 必须使用具有对 refs 文件系统的完全权限的管理员帐户运行 Robocopy。
- 使用适当的命令行选项和技术方案,确保数据完整性、一致性和可靠性。
- 定期备份数据,以防数据丢失或损坏。
用于将文件复制到 50 多台远程计算机的 Robocopy 命令
【中文标题】用于将文件复制到 50 多台远程计算机的 Robocopy 命令【英文标题】:Robocopy commands to copy a file to over 50 remote machines 【发布时间】:2015-01-04 12:22:46 【问题描述】:我昨天开始研究 robocopy,试图将文件从一个目标复制并覆盖到多台远程计算机。我试过Robocopy to copy files to a remote machine,但它不起作用。我得到与链接中的人相同的错误。有没有人有任何建议或以正确的方式引导我?非常感谢!
【问题讨论】:
如果您只复制一个文件,您可以使用 PowerShellCopy-Item C:\local\folder\file.txt \\Server\C$\Path
,因为它支持 UNC 路径
是否可以将一个文件放到我在 RemoteNames.txt 中的多台远程计算机上?感谢您花时间回答马特
【参考方案1】:
您可以为此使用 PowerShell。它有一个效率低下的问题,它会一次复制一个,但这对于 50 台机器来说不应该是一个问题。如果您制作了 PowerShell 脚本,这可能会有所帮助
$computers = Get-Content "C:\filewithcomputers.txt"
$fileToCopy = "C:\filetocopy.txt"
ForEach($computer in $Computers)
Copy-Item -Path $fileToCopy -Destination "\\$computer\C`$\Temp"
假设该文件包含一个计算机列表,每台计算机都在自己的行中,则将文件$fileToCopy
复制到文件C:\filewithcomputers.txt
中的每个服务器。该文件将被复制到每台机器上的临时文件夹中。根据您的方案所需更新路径。我只建议这样做,因为您标记了powershell-remoting。如果您不熟悉 PowerShell,也许其他人可以为您提供更多您正在寻找的更好的答案。对一个文件使用 RoboCopy 似乎很乏味。
如果您想检查一个文件夹是否存在并且是否可以访问,您可以执行以下操作。
$computers = Get-Content "C:\filewithcomputers.txt"
$fileToCopy = "C:\filetocopy.txt"
ForEach($computer in $Computers)
$destinationx86 = "\\$computer\C`$\Program Files (x86)"
$destination = "\\$computer\C`$\Program Files"
If(Test-Path $destinationx86)
# Copy this to Program Files (x86)
Copy-Item -Path $fileToCopy -Destination $destinationx86
Else
# Copy this to Program Files
Copy-Item -Path $fileToCopy -Destination $destination
【讨论】:
【参考方案2】:如果您需要使用不同的凭据进行连接,您可以使用
$credential = Get-Credential
New-PSDrive -Name "Computer01" -PSProvider FileSystem -Root "\\Computer01\Share" -Credential $credential -Scope global
现在您可以复制到例如计算机01:\文件夹01\
【讨论】:
【参考方案3】:如果您已将环境设置为支持 PSRemoting 并将文件放在文件共享中,则可以使用 PowerShell Remoting 指示多台计算机通过 Invoke-Command 几乎同时检索文件。您可以使用 -ThrottleLimit 来限制同时操作的数量,具体取决于源文件的大小以及网络/服务器的稳健程度:
$computers = Get-Content "C:\filewithcomputers.txt"
$originalsource = "\\fileserver\shared\payload.exe"
$originaldestination = "c:\"
$scriptblockcontent =
param($source,$destination)
Copy-Item -Path $source -Destination $destination
Invoke-Command –ComputerName $Computers –ScriptBlock $scriptblockcontent `
–ThrottleLimit 50 -ArgumentList $originalsource,$originaldestination
【讨论】:
以上是关于Robocopy 可以与 refs 文件系统配合使用,以提高数据复制和同步的效率和可靠性的主要内容,如果未能解决你的问题,请参考以下文章