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,但它不起作用。我得到与链接中的人相同的错误。有没有人有任何建议或以正确的方式引导我?非常感谢!

【问题讨论】:

如果您只复制一个文件,您可以使用 PowerShell Copy-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 文件系统配合使用,以提高数据复制和同步的效率和可靠性的主要内容,如果未能解决你的问题,请参考以下文章

如何安全地杀死 robocopy 进程

Robocopy:不删除包含排除文件的文件夹

我可以让 robocopy 日志文件只显示一行摘要和日期吗?而不是多列?谢谢你

使用RoboCopy 命令

使用RoboCopy 命令

Robocopy 的“可重启”选项是啥?