क्या MS के पॉवरशेल में rsync के बराबर है?


15

रुपीक्स बहुत उपयोगी है, मुझे सभी फाइलों को एक निर्देशिका में कॉपी करने की आवश्यकता नहीं है। यह केवल नई फ़ाइलों को अद्यतन करता है।

मैं इसे साइबरविन के साथ उपयोग करता हूं लेकिन मुझे लगता है कि कुछ विसंगतियां हैं, जो इस सवाल का मुख्य ध्यान केंद्रित नहीं हैं।

तो वहाँ एक बराबर है?

जवाबों:



1

यह बीच निर्देशिकाओं को सिंक्रनाइज़ करने के लिए काम करता है। फ़ंक्शन को "rsync" कहें। मुझे रोबोकॉपी की अनुमति की समस्या थी। यह उन मुद्दों नहीं है।

function rsync ($source,$target) {

  $sourceFiles = Get-ChildItem -Path $source -Recurse
  $targetFiles = Get-ChildItem -Path $target -Recurse

  if ($debug -eq $true) {
    Write-Output "Source=$source, Target=$target"
    Write-Output "sourcefiles = $sourceFiles TargetFiles = $targetFiles"
  }
  <#
  1=way sync, 2=2 way sync.
  #>
  $syncMode = 1

  if ($sourceFiles -eq $null -or $targetFiles -eq $null) {
    Write-Host "Empty Directory encountered. Skipping file Copy."
  } else
  {
    $diff = Compare-Object -ReferenceObject $sourceFiles -DifferenceObject $targetFiles

    foreach ($f in $diff) {
      if ($f.SideIndicator -eq "<=") {
        $fullSourceObject = $f.InputObject.FullName
        $fullTargetObject = $f.InputObject.FullName.Replace($source,$target)

        Write-Host "Attempt to copy the following: " $fullSourceObject
        Copy-Item -Path $fullSourceObject -Destination $fullTargetObject
      }


      if ($f.SideIndicator -eq "=>" -and $syncMode -eq 2) {
        $fullSourceObject = $f.InputObject.FullName
        $fullTargetObject = $f.InputObject.FullName.Replace($target,$source)

        Write-Host "Attempt to copy the following: " $fullSourceObject
        Copy-Item -Path $fullSourceObject -Destination $fullTargetObject
      }

    }
  }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.