quyền truy cập tập tin rsync trên windows


32

Tôi có một dịch vụ rsync đồng bộ các tệp từ máy từ xa sang máy thả chúng trên ổ đĩa mạng.

Tôi cần các tập tin sao chép để có quyền bản quyền của thư mục đích.

Quá trình đồng bộ hóa chạy tốt, nhưng sau khi kết thúc, tôi không thể truy cập vào một số thư mục - Quyền bị từ chối.

Tôi đăng nhập với tư cách quản trị viên tên miền; nó cũng không cho phép tôi sửa đổi bất kỳ quyền nào trên các thư mục đã nói. Đưa cái gì?

chạy lệnh:

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

bạn đang sử dụng lệnh nào để đồng bộ hóa?
John T

Câu trả lời:


24

(từ http://www.samba.org/ftp/rsync/rsync.html )

Tóm lại: để cung cấp cho các tệp đích (cả cũ và mới) các quyền nguồn, hãy sử dụng --perms.

Để cung cấp cho các tệp mới các quyền mặc định đích (trong khi vẫn giữ nguyên các tệp hiện có), hãy đảm bảo rằng --permstùy chọn này bị tắt và sử dụng --chmod=ugo=rwX(đảm bảo rằng tất cả các bit không có mặt nạ được bật).

Nếu bạn quan tâm để làm cho hành vi sau này dễ nhập hơn, bạn có thể xác định bí danh popt cho nó, chẳng hạn như đặt dòng này vào tệp ~ / .popt (sau đây xác định tùy chọn -Z và bao gồm --no- g để sử dụng nhóm mặc định của thư mục đích):

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

cảm ơn nhiều. Tôi không thể nhớ những lá cờ phù hợp để sử dụng ...
Vokuhila-Oliba

2
Điều này có liên quan đến rsync trên Linux, nhưng không phải lúc nào cũng giải quyết được vấn đề khi rsync vào ổ đĩa Windows, đó là những gì bài viết gốc đang yêu cầu.
Simon East

18

Bảo mật "posix" của Cygwin đã gây ra cho tôi rất nhiều vấn đề với quyền truy cập tệp NTFS của Windows - ngay cả khi sử dụng --no-permsvới rsync.

Tôi thấy rằng các tệp / thư mục mới được tạo không kế thừa đúng các quyền mặc định, nhưng mọi tệp / thư mục kết thúc với rất nhiều <not inherited>mục trong tệp / thư mục Windows được bảo mật tab. (Và vấn đề này không chỉ liên quan đến rsync).

Tôi thấy bài đăng liên quan này và cả liên kết này đều rất hữu ích trong cách giải quyết những vấn đề này bằng cách sử dụng noacltùy chọn trong /etc/fstabtệp của cygwin . Nhược điểm của giải pháp này là cygwin mất khả năng thiết lập quyền truy cập tệp / thư mục, nhưng trong nhiều trường hợp, điều này không quan trọng.

.


Chỉnh sửa tập tin / etc / fstab đã sửa nó cho tôi. Tôi đã phải sử dụng rsync trong cygwin thay vì triển khai khác như DeltaCopy để làm điều này.
Matt Connolly

Nếu bạn chỉ đang sử dụng gói cwrsync (chứ không phải cygwin), bạn sẽ đặt tệp fstab ở đâu?
Simon East

Tôi không sử dụng cygwin. Tôi có một ổ đĩa NTFS thông thường, được gắn trên OS X và các tệp rsync cho nó. Sau đó, các tệp trong Windows đã hoàn toàn làm hỏng quyền. Tìm kiếm một giải pháp.
Steven Lu

Có vẻ như tôi đã sử dụng phương pháp "rủi ro" để cài đặt NTFS trên macOS bằng trình điều khiển tích hợp, được cho là kém ổn định hơn nhiều so với trình điều khiển paragon / tuxera và FUSE. Vì vậy, hãy ghi nhớ điều đó nếu bạn ở trên cùng một chiếc thuyền
Steven Lu

8

Trên Windows với DeltaCopy tôi có thể làm cho nó hoạt động với:

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

Nó làm việc ngay cả với --recursive


Điều này chủ yếu hoạt động, tuy nhiên, tôi đã phải thay đổi tùy chọn --chmod để bao gồm a = rwx để các tệp bó, v.v. sẽ thực thi đúng.
Taylor Gerring

1
Đây là lựa chọn duy nhất làm việc cho tôi. Đã thử --no-perms được đề xuất ở trên và fstab không có kết quả. Điều này chỉ cung cấp cho tôi một số quyền <không được kế thừa>, đây là loại quyền mà tôi muốn và không bao gồm quyền từ chối cho người dùng thực thi. Cảm ơn!
AronVanAmmers

DeltaCopy cũng chứa một tệp thực thi chmod có thể sửa các quyền sau đó, ví dụ: chmod -R 777 / cygdrive / g
jnnnnn

1
--perms là những gì còn thiếu đối với tôi, để giải quyết bản sao là vấn đề chỉ đọc.
Tyler S. Loeper

1

rsync, ít nhất trên Cygwin có công tắc sau:

-A, --acls bảo toàn ACL (ngụ ý --perms)

Phiên bản Cygwin của tôi là:

CYGWIN_NT-6.3 1.7,29 (0,272 / 3/3) 2014-04-07 13:46 x86_64 Cygwin

Hi vọng điêu nay co ich!


1
Chào mừng bạn đến với Siêu người dùng! Mặc dù điều này về mặt lý thuyết có thể trả lời câu hỏi, vì mục đích cải thiện, tốt hơn là nên bao gồm các chi tiết về cách trả lời câu hỏi này (trích dẫn một nguồn để sao lưu yêu cầu của bạn là một lợi thế).
G-Man nói 'Phục hồi Monica'

1

Câu trả lời được xếp hạng hàng đầu chỉ hoạt động nếu bạn đang sử dụng rsync trên ssh vào windows. Nếu bạn đang sử dụng daemon rsync của cygwin, chỉ sử dụng noacl trong / etc / fstab không có ích gì, vì bất kỳ lý do gì, nó không tôn trọng quyền thừa kế ngay cả khi bạn thoát khỏi người dùng và thử noacl, ghi đè, v.v. Điều này dường như xảy ra nếu bạn đang kết nối vào ổ đĩa cấp cao nhất và sử dụng đường dẫn = / cygdrive / bất cứ thứ gì trong /etc/rsyncd.conf. Thay vào đó, bạn cần tạo một điểm gắn kết riêng trong / etc / fstab và sử dụng điểm đó trong rsyncd.conf của bạn thay vào đó:

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

trong /etc/rsyncd.conf, bạn sẽ có một cái gì đó như thế này:

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

Sau đó, tôi phải khởi động lại hệ thống windows, chỉ khởi động lại dịch vụ rsync một mình dường như không giúp được gì, nó cứ ném lỗi chroot và chdir (mặc dù / d_drive đã được gắn và sử dụng chroot = false và tôi có thể viết cho nó). Sau đó, khi bạn rsync vào hệ thống windows, hãy sử dụng:

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

1

Trước đây, tôi đã chỉ định lại các quyền trong Windows cho người dùng hiện tại của mình sau đó bằng cách sử dụng takeowntại một dấu nhắc lệnh nâng cao như:

takeown /f <NameOfFolder> /r /d Y

Tất nhiên, nếu bạn đã sử dụng các rsynccờ chính xác ở vị trí đầu tiên thì điều này là không cần thiết nhưng nếu bạn không muốn chạy lại rsynccác tệp bạn đã sao chép thì tôi sẽ khuyên bạn nên điều này.


1
Chào mừng bạn đến với Siêu người dùng! Xin vui lòng đọc lại câu hỏi một cách cẩn thận. Câu trả lời của bạn không trả lời câu hỏi ban đầu.
DavidPostill

Cho rằng câu hỏi là "những gì cho?" Tôi muốn nói rằng câu trả lời của nó thậm chí không phải là một giải pháp mà là một lời giải thích nên hầu hết câu trả lời ở đây không trả lời câu hỏi. Đây vẫn là một bổ sung hữu ích và phù hợp theo ngữ cảnh cho vấn đề nhưng tôi có thể chuyển nó sang một nhận xét nếu phù hợp hơn.
CodingLumis

Đợi đã, tôi không thể thêm ý kiến ​​vì tôi không có tiếng tăm trên 50 nên điều này sẽ phải ở lại đây.
CodingLumis

correct rsync flags> và những gì sẽ được?
oldmud0

@ oldmud0 xem các câu trả lời trước tôi để biết các tổ hợp cờ thích hợp đặt quyền trong quá trình sao chép. Giải pháp của tôi là lý tưởng phù hợp cho những người đã sao chép các tệp và không muốn xóa chúng một lần nữa để đảm bảo các quyền là chính xác.
CodingLumis

0

Tôi gặp vấn đề này rsnapshot, trong đó sử dụng rsync để sao lưu. Tôi ghi đè nó loại bỏ --relativetừ rsync_long_args. Sau đó thư mục ccho đĩa chính nó với quyền lạ không tạo ra.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.