การอนุญาตให้ใช้ไฟล์ rsync บน windows


32

ฉันมีบริการ rsync ที่ซิงค์ไฟล์จากเครื่องระยะไกลไปยังเครื่องที่วางไว้ในไดรฟ์เครือข่าย

ฉันต้องการไฟล์ที่คัดลอกเพื่อรับสิทธิ์พื้นฐานของโฟลเดอร์ปลายทาง

กระบวนการซิงค์ทำงานได้ดี แต่หลังจากเสร็จสิ้นฉันไม่สามารถเข้าถึงโฟลเดอร์บางโฟลเดอร์ได้ - สิทธิ์ถูกปฏิเสธ

ฉันเข้าสู่ระบบในฐานะผู้ดูแลโดเมน; มันจะไม่อนุญาตให้ฉันแก้ไขสิทธิ์ใด ๆ ในโฟลเดอร์ที่กล่าวถึงเช่นกัน สิ่งที่ช่วยให้?

เรียกใช้คำสั่ง:

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

คุณกำลังใช้คำสั่งอะไรในการซิงค์
John T

คำตอบ:


24

(จากhttp://www.samba.org/ftp/rsync/rsync.html )

สรุป: จะให้ไฟล์ปลายทาง (ทั้งเก่าและใหม่) --permsสิทธิ์ที่มาใช้

หากต้องการให้สิทธิ์ใหม่เริ่มต้นสำหรับปลายทางไฟล์ใหม่ (ในขณะที่ไม่เปลี่ยนแปลงไฟล์ที่มีอยู่) ตรวจสอบให้แน่ใจว่า--permsตัวเลือกนั้นถูกปิดและใช้งาน--chmod=ugo=rwX(ซึ่งทำให้มั่นใจได้ว่าบิตที่ไม่ถูกปิดบังทั้งหมดจะถูกเปิดใช้งาน)

หากคุณต้องการที่จะทำให้พฤติกรรมหลังนี้ง่ายต่อการพิมพ์คุณสามารถกำหนดชื่อแทน popt ได้เช่นวางบรรทัดนี้ในไฟล์ ~ / .popt (ต่อไปนี้จะกำหนดตัวเลือก -Z และรวมถึง - ไม่มี - g เพื่อใช้กลุ่มเริ่มต้นของปลายทาง dir):

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

ขอบคุณมาก. ฉันจำธงที่ถูกต้องไม่ได้ที่จะใช้ ...
Vokuhila-Oliba

2
สิ่งนี้เกี่ยวข้องกับ rsync บน Linux แต่ไม่สามารถแก้ไขปัญหาได้เสมอเมื่อ rsync กำลังเข้าสู่ไดรฟ์ Windows ซึ่งเป็นสิ่งที่โพสต์ต้นฉบับถาม
Simon East

18

ความปลอดภัยของ "posix" ของ Cygwin ทำให้ฉันมีปัญหามากมายเกี่ยวกับสิทธิ์การใช้ไฟล์ Windows NTFS - แม้จะใช้--no-permsกับ rsync

ฉันพบว่าไฟล์ / โฟลเดอร์ที่สร้างขึ้นใหม่ไม่ได้รับสิทธิ์เริ่มต้นอย่างถูกต้อง แต่ทุกไฟล์ / โฟลเดอร์จบลงด้วย<not inherited>รายการจำนวนมากในแท็บไฟล์ / โฟลเดอร์ Windows ขั้นสูงแท็บความปลอดภัยขั้นสูง (และปัญหานี้ไม่ได้เกี่ยวข้องกับ rsync เท่านั้น)

ฉันพบโพสต์ที่เกี่ยวข้องและลิงค์นี้มีประโยชน์มากในการแก้ไขปัญหาเหล่านี้โดยใช้noaclตัวเลือกใน/etc/fstabไฟล์ของ cygwin ข้อเสียของโซลูชันนี้คือ cygwin สูญเสียความสามารถในการตั้งค่าการอนุญาตของไฟล์ / โฟลเดอร์ แต่ในหลาย ๆ กรณีนี้ไม่สำคัญ

(Googling หัวข้อนี้คุณอาจพบการอ้างอิงถึงการตั้งค่าตัวแปรสภาพแวดล้อม CYGWIN = NONTSEC แต่สำหรับ cygwin v1.5 และไม่ทำงานใน cygwin v1.7 เป็นต้นไป)


การแก้ไขไฟล์ / etc / fstab แก้ไขให้ฉัน ฉันต้องใช้ rsync ภายใน cygwin แทนการปรับใช้อื่นเช่น DeltaCopy เพื่อทำสิ่งนี้
แมตต์คอน

หากคุณเพิ่งใช้แพ็คเกจ cwrsync (ไม่ใช่ cygwin) คุณวางไฟล์ fstab ไว้ที่ไหน?
Simon East

ฉันไม่ได้ใช้ cygwin ฉันใช้ไดรฟ์ NTFS ปกติติดตั้งบน OS X และไฟล์ rsync จากนั้นไฟล์เหล่านี้ใน Windows จะมีสิทธิ์อย่างสมบูรณ์ กำลังมองหาทางออก
Steven Lu

ดูเหมือนว่าฉันได้ใช้วิธี "ความเสี่ยง" ของการติดตั้ง NTFS บน macOS โดยใช้ไดรเวอร์ในตัวซึ่งควรจะมีเสถียรภาพน้อยกว่าไดรเวอร์ paragon / tuxera และ FUSE ดังนั้นอย่าลืมว่าถ้าคุณอยู่ในเรือลำเดียวกัน
Steven Lu

8

บน Windows ด้วยDeltaCopyฉันสามารถใช้งานได้กับ:

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

มันทำงานได้แม้กับ --recursive


ส่วนใหญ่ใช้งานได้ แต่ฉันต้องเปลี่ยนตัวเลือก --chmod เพื่อรวม a = rwx เพื่อให้ไฟล์แบตช์ ฯลฯ ทำงานได้อย่างถูกต้อง
Taylor Gerring

1
นี่เป็นตัวเลือกเดียวที่เหมาะกับฉัน พยายาม - ไม่ perms แนะนำข้างต้นและ fstab จะไม่มีประโยชน์ อันนี้ให้สิทธิ์การใช้งานแบบ <ไม่สืบทอด> ซึ่งเป็นประเภทสิทธิ์ที่ฉันต้องการและไม่รวมสิทธิ์ปฏิเสธสำหรับผู้ใช้ที่ดำเนินการอยู่ ขอบคุณ!
AronVanAmmers

DeltaCopy ยังมีไฟล์เรียกทำงาน chmod ที่สามารถแก้ไขสิทธิ์ได้ในภายหลังเช่น chmod -R 777 / cygdrive / g
jnnnnn

1
--perms เป็นสิ่งที่ขาดหายไปสำหรับฉันเพื่อแก้ปัญหาการคัดลอกเป็นปัญหาแบบอ่านอย่างเดียว
Tyler S. Loeper

1

rsync อย่างน้อยบน Cygwin มีสวิตช์ดังต่อไปนี้:

-A, - อนุญาตให้รักษา ACLs (หมายถึง --perms)

รุ่น Cygwin ของฉันคือ:

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

หวังว่านี่จะช่วยได้!


1
ยินดีต้อนรับสู่ Super User! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีเพื่อประโยชน์ในการปรับปรุงเราควรรวมรายละเอียดว่าวิธีนี้ตอบคำถามได้อย่างไร (การอ้างอิงแหล่งที่มาเพื่อสำรองข้อเรียกร้องของคุณเป็นข้อดี
G-Man กล่าวว่า 'Reinstate Monica'

1

คำตอบที่ได้รับคะแนนสูงสุดจะใช้ได้ก็ต่อเมื่อคุณใช้ rsync บน ssh ไปยัง windows หากคุณใช้ cygwin rsync daemon เพียงแค่ใช้ noacl ใน / etc / fstab ก็ไม่ช่วยไม่ว่าด้วยเหตุผลใดก็ตามมันไม่ได้ให้เกียรติการสืบทอดแม้ว่าคุณจะกำจัดผู้ใช้และลองใช้ noacl, override ฯลฯ สิ่งนี้น่าจะเกิดขึ้น หากคุณกำลังซิงค์ลงในไดรฟ์ระดับบนสุดและใช้เส้นทาง = / cygdrive / อะไรก็ตามใน /etc/rsyncd.conf คุณต้องสร้างจุดเชื่อมต่อแยกต่างหากใน / etc / fstab และใช้สิ่งนั้นใน rsyncd.conf ของคุณแทน:

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

ใน /etc/rsyncd.conf คุณมีสิ่งนี้:

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

จากนั้นฉันต้องรีบูตระบบ windows เพียงแค่เริ่มบริการ rsync เพียงอย่างเดียวดูเหมือนจะไม่ช่วย แต่ก็ยังคงโยนข้อผิดพลาด chroot และ chdir (แม้ว่า / d_drive ถูกติดตั้งและใช้ chroot = false และฉันสามารถเขียนได้) จากนั้นเมื่อคุณซิงค์กับระบบ windows ให้ใช้:

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

1

ในอดีตที่ผ่านมาฉันเพิ่งกำหนดสิทธิ์ใน Windows ให้กับผู้ใช้ปัจจุบันของฉันอีกครั้งหลังจากใช้takeownที่พร้อมท์คำสั่งยกระดับเป็น:

takeown /f <NameOfFolder> /r /d Y

แน่นอนถ้าคุณใช้การตั้งrsyncค่าสถานะที่ถูกต้องในครั้งแรกสิ่งนี้ไม่จำเป็น แต่ถ้าคุณไม่ต้องการเรียกใช้ซ้ำrsyncสำหรับไฟล์ที่คุณคัดลอกไปแล้วฉันจะแนะนำสิ่งนี้


1
ยินดีต้อนรับสู่ Super User! โปรดอ่านคำถามอีกครั้งอย่างระมัดระวัง คำตอบของคุณไม่ตอบคำถามเดิม
DavidPostill

ระบุว่าคำถามคือ "อะไรให้?" ฉันจะบอกว่าคำตอบของมันไม่ได้เป็นทางออก แต่เป็นคำอธิบายดังนั้นคำตอบส่วนใหญ่ที่นี่ไม่ตอบคำถาม นี่เป็นการเพิ่มเนื้อหาที่มีประโยชน์และเหมาะสมตามบริบท แต่ฉันสามารถย้ายไปยังความคิดเห็นได้ถ้าเหมาะสมกว่า
CodingLumis

โอ้เดี๋ยวก่อนฉันไม่สามารถเพิ่มความคิดเห็นเพราะฉันไม่มีชื่อเสียง 50+ ดังนั้นสิ่งนี้จะต้องอยู่ที่นี่
CodingLumis

correct rsync flags> และสิ่งเหล่านั้นจะเป็นอย่างไร
oldmud0

@ oldmud0 ดูคำตอบที่เกิดขึ้นก่อนหน้านี้สำหรับการรวมแฟล็กที่เหมาะสมซึ่งตั้งค่าการอนุญาตระหว่างการคัดลอก โซลูชันของฉันเหมาะอย่างยิ่งสำหรับผู้ที่คัดลอกไฟล์ไปแล้วและไม่ต้องการลบสำเนาเหล่านั้นอีกครั้งเพื่อให้แน่ใจว่าสิทธิ์นั้นถูกต้อง
CodingLumis

0

ฉันมีปัญหานี้ด้วยrsnapshotซึ่งใช้ rsync ในการสำรองข้อมูล ฉัน overrided มันลบจาก--relative rsync_long_argsหลังจากโฟลเดอร์นั้นcสำหรับดิสก์นั้นมีสิทธิ์แปลก ๆ จะไม่สร้างขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.