Rsync มีประโยชน์มากฉันไม่ต้องคัดลอกไฟล์ทั้งหมดในไดเรกทอรี มันอัพเดตเฉพาะไฟล์ที่ใหม่กว่า
ฉันใช้กับ cygwin แต่ฉันคิดว่ามีความไม่สอดคล้องกันซึ่งไม่ใช่จุดสนใจหลักของคำถามนี้
ดังนั้นจึงมีความเท่าเทียมกัน?
Rsync มีประโยชน์มากฉันไม่ต้องคัดลอกไฟล์ทั้งหมดในไดเรกทอรี มันอัพเดตเฉพาะไฟล์ที่ใหม่กว่า
ฉันใช้กับ cygwin แต่ฉันคิดว่ามีความไม่สอดคล้องกันซึ่งไม่ใช่จุดสนใจหลักของคำถามนี้
ดังนั้นจึงมีความเท่าเทียมกัน?
คำตอบ:
แม้ว่าจะไม่เทียบเท่าที่แน่นอนและไม่ใช่คุณสมบัติ Powershell แต่robocopyสามารถทำสิ่งต่าง ๆ ที่ rsync ใช้
ดูเพิ่มเติมที่/server//q/129098
การทำงานนี้เพื่อซิงโครไนซ์ไดเรกทอรีระหว่าง เรียกใช้ฟังก์ชัน "rsync" ฉันมีปัญหาสิทธิ์กับ robocopy นี่ไม่มีปัญหาเหล่านั้น
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
}
}
}
}