Rsync çok yararlı, bir dizindeki tüm dosyaları kopyalamak zorunda değilim. Yalnızca daha yeni dosyaları günceller.
Cygwin ile kullanıyorum ama bu sorunun ana odağı olmayan bazı tutarsızlıklar olduğunu düşünüyorum.
yani bir eşdeğeri var mı?
Rsync çok yararlı, bir dizindeki tüm dosyaları kopyalamak zorunda değilim. Yalnızca daha yeni dosyaları günceller.
Cygwin ile kullanıyorum ama bu sorunun ana odağı olmayan bazı tutarsızlıklar olduğunu düşünüyorum.
yani bir eşdeğeri var mı?
Yanıtlar:
Tam bir eşdeğer olmasa da ve bir Powershell özelliği olmasa da, robocopy rsync için kullanılan şeylerden bazılarını yapabilir.
Ayrıca bkz. Https://serverfault.com/q/129098
Bu, dizinleri arasında senkronize etmek için çalışır. "Rsync" işlevini çağırın. robokopi ile ilgili izin sorunları yaşadım. Bunun bu sorunları yok.
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
}
}
}
}