Windows'ta rsync dosya izinleri


32

Dosyaları uzak makineden bir ağ sürücüsüne bırakan bir makineye eşitleyen bir rsync hizmetim var.

Hedef klasörün yerel izinlerini almak için kopyalanan dosyalara ihtiyacım var.

Eşitleme işlemi iyi çalışıyor ancak bittikten sonra, bazı klasörlere erişemiyorum - İzin Verilmedi.

Etki alanı yöneticisi olarak giriş yaptım; söz konusu klasörlerdeki herhangi bir izni de değiştirmeme izin vermiyor. Ne verir?

run komutu:

rsync.exe  -v -rlt -z --delete "src_path" "dst_path"

Şu anda senkronize etmek için hangi komutu kullanıyorsunuz?
John T

Yanıtlar:


24

(dan http://www.samba.org/ftp/rsync/rsync.html adresinden )

Özetle: Hedef dosyalara (eski ve yeni) kaynak izinleri vermek için, --perms .

Yeni dosyalara hedef varsayılan izinleri vermek için (varolan dosyaları değiştirmeden bırakırken), --permsseçeneğin kapalı olduğundan ve kullanıldığından emin olun --chmod=ugo=rwX(tüm maskelenmemiş bitlerin etkinleştirilmesini sağlar).

Bu ikinci davranışı yazmayı kolaylaştırmak istiyorsanız, bu satırı ~ / .popt dosyasına koymak gibi bir popo takma adı tanımlayabilirsiniz (aşağıda -Z seçeneğini tanımlar ve --no- g hedefin varsayılan grubunu kullanmak için):

    rsync alias -Z --no-p --no-g --chmod=ugo=rwX

çok teşekkürler.
Kullanmak

2
Bu Linux'ta rsync ile ilgilidir, ancak asıl mesajın sorduğu şey olan bir Windows sürücüsüne rsync' yaparken bu sorunu her zaman çözmez.
Simon East

18

Cygwin'in "posix" güvenliği, Windows NTFS dosya izinleriyle ilgili birçok soruna neden oldu - --no-permsrsync ile bile kullanıyor .

Yeni oluşturulan dosya / klasörlerin varsayılan izinleri doğru bir şekilde devralmadığını tespit ettim, ancak her dosya / klasör çok sayıda bitiyor <not inherited> , Windows dosya / klasör Advnanced security sekmesinde birçok girişle bitiyor. (Ve bu sorun sadece rsync ile ilgili değil).

Bu ilgili yazıyı ve bu bağlantıyınoacl cygwin'deki seçeneği kullanarak bu sorunların nasıl çözüleceği konusunda çok faydalı buldum./etc/fstab dosyasındaki . Bu çözümün dezavantajı, cygwin'in dosya / klasör izinlerini ayarlama kabiliyetini kaybetmesidir, ancak çoğu durumda bu önemli değildir.

(Bu konuyla ilgili olarak, büyük olasılıkla CYGWIN = NONTSEC ortam değişkenini ayarlamaya ilişkin referanslar bulacaksınız, ancak bu cygwin v1.5 içindir ve cygwin v1.7'de çalışmaz).


/ Etc / fstab dosyasını düzenlemek benim için düzeltti. Bunu yapmak için DeltaCopy gibi başka bir dağıtım yerine cygwin içinde rsync kullanmak zorunda kaldım.
Matt Connolly,

Sadece cwrsync paketini kullanıyorsanız (ve cygwin'i değil) fstab dosyasını nereye koydunuz?
Simon East

Cygwin kullanmıyorum. OS X'e bağlı düzenli bir NTFS sürücüsü alıyorum ve buna rsync dosyaları veriyorum. Sonra, Windows içindeki bu dosyalar tamamen izinleri bozdu. Bir çözüm arıyorum.
Steven Lu,

sanki paragon / smokin ve FUSE sürücülerinden daha az kararlı olduğu tahmin edilen yerleşik sürücüyü kullanarak NTFS'yi macOS'a monte etmenin "riskli" yöntemini kullanıyor gibiyim. Bu yüzden eğer aynı gemideyseniz bunu aklınızda bulundurun
Steven Lu,

8

DeltaCopy ile Windows üzerinde çalışmasını sağlayabilir:

rsync --perms --chmod=a=rw,Da+x ...

İle çalıştı bile --recursive


Bu çoğunlukla işe yaradı, ancak toplu iş dosyalarının vs. düzgün çalışabilmesi için --chmod seçeneğini bir = rwx içerecek şekilde değiştirmek zorunda kaldım.
Taylor Gerring

1
Bu benim için çalışan tek seçenek. Yukarıda önerilen --no-perm'ları ve fstab'ı boşa çıkarmaya çalıştım. Bu bana sadece bazı <miras alınmamış> izinleri verdi, bu da istediğim izinlerdi ve yürüten kullanıcı için Reddet izni içermiyordu. Teşekkürler!
AronVanAmmers 17:12

DeltaCopy da sonradan izinleri düzeltebilecek bir chmod yürütülebilir içeren örneğin chmod -R 777 / cygdrive / g
jnnnnn

1
--perms, kopyayı salt okunur olarak çözmek için benim için eksik olan şeydi.
Tyler S. Loeper

1

rsync, en azından Cygwin'de şu anahtara sahip:

-A, --acls ACL'leri korur (--perms anlamına gelir)

Cygwin versiyonum:

CYGWIN_NT-6.3 1.7.29 (0.272 / 5/3) 2014-04-07 13:46 x86_64 Cygwin

Bu yardımcı olur umarım!


1
Süper Kullanıcıya Hoşgeldiniz! Bu soruyu teorik olarak cevaplayabilse de, iyileştirme uğruna bu sorunun soruyu nasıl cevapladığının ayrıntılarını içermesi tercih edilir (talebinizi desteklemek için bir kaynak belirtmek artıdır).
G-Man,

1

En yüksek oy alan cevap sadece ssh üzerinden rsync komutunu pencerelere kullanıyorsanız çalışır. Eğer cygwin rsync arka planını sadece / etc / fstab içindeki noacl kullanarak kullanıyorsanız, kullanıcıdan kurtulup, noacl, geçersiz kılma vb. Denemeseniz bile kalıtımdan ödün vermez. üst seviye bir sürücüye giriyorsanız ve /etc/rsyncd.conf dizininde path = / cygdrive / whatever öğesini kullanın. Bunun yerine, / etc / fstab dosyasında ayrı bir bağlama noktası yapmalı ve bunun yerine rsyncd.conf dosyasını kullanmalısınız:

D:\     /d_drive  ntfs    binary,posix=0,noacl,user,override      0 0

/etc/rsyncd.conf'da şöyle bir şeye sahip olursunuz:

use chroot = yes

[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser

Sonra windows sistemini yeniden başlatmak zorunda kaldım, sadece rsync servisini yeniden başlatmak sadece yardım etmedi, chroot ve chdir hatalarını atmaya devam etti (/ d_drive takılmış ve chroot = false kullanıyor ve yazabildiğim halde). Ardından windows sisteme rsync uygulamasında:

cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o  ./ rsync://someUser@localhost:remotePort/d_drive/

1

Daha önce Windows’taki izinleri daha sonra şu anki kullanıcıma takeownyükseltilmiş bir komut isteminde aşağıdaki gibi kullanıyorum:

takeown /f <NameOfFolder> /r /d Y

Tabii rsyncilk etapta doğru bayrakları kullandıysanız, o zaman bu gereksizdir, ancak rsyncdaha önce kopyaladığınız dosyaları tekrar çalıştırmak istemiyorsanız, bunu tavsiye ederim.


1
Süper Kullanıcıya Hoşgeldiniz! Lütfen soruyu tekrar dikkatlice okuyunuz. Yanıtınız yok değil orijinal soruya cevap.
DavidPostill

Sorunun “ne verir?” Olduğu göz önüne alındığında. Cevabını bir çözüm bile değil, bir açıklama olarak söyleyebilirim, bu nedenle cevabın çoğu soruya cevap vermiyor. Bu, yine de konuyla ilgili faydalı ve bağlamsal olarak uygun bir ektir, ancak daha uygunsa yorumu bir yoruma taşıyabilirim.
CodingLumis

Bekle, yorum ekleyemem çünkü 50'den fazla itibarım yok bu yüzden burada kalmak zorunda kalacağım.
CodingLumis

correct rsync flags> ve bunlar ne olurdu?
oldmud0

@ oldmud0, kopya sırasında izinleri ayarlayan uygun bayrak kombinasyonları için benimkinden önceki cevapları gör. Çözümüm, dosyaları zaten kopyalamış olanlar ve izinlerin doğru olduğundan emin olmak için tekrar kopyalarını silmek istemeyenler için idealdir.
CodingLumis

0

rsnapshotYedekleme için rsync kullanan bu sorunu yaşadım . Ben çıkarmadan overrided --relativedan rsync_long_args. Bu klasörden sonra cdisk için garip izinlerle kendisi yaratmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.