2009-03-20 33 views
136

Tôi nhận được một lỗi khó hiểu từ rsync và những điều ban đầu tôi tìm thấy từ tìm kiếm trên web (cũng như tất cả các chmod thông thường ' ing) không giải quyết được:lỗi rsync: không đặt thời gian trên "/ foo/bar": Thao tác không được phép

rsync: failed to set times on "/foo/bar": Operation not permitted (1) 
rsync error: some files could not be transferred (code 23) 
    at /SourceCache/rsync/rsync-35.2/rsync/main.c(992) [sender=2.6.9] 

Dường như nó hoạt động bất chấp lỗi đó, nhưng sẽ tốt hơn nếu loại bỏ điều đó.

+2

Điểm gắn kết là "/ foo/bar"? –

+0

không, chỉ là một thư mục bình thường theo như tôi có thể nói. – dreeves

+0

Chỉ gặp phải sự cố tương tự, mặc dù mã lỗi của tôi là 22: rsync: không đặt thời gian thành ... Đối số không hợp lệ (22). Sau khi một số kiểm tra nó quay ra các tập tin của tôi đã được ngày như sửa đổi lần cuối vào năm 1956! Giải pháp: chạm vào tất cả các tệp, sự cố được giải quyết. :) "find. -print0 | xargs -0 chạm" – KIAaze

Trả lời

210

Nếu /foo/bar có trên NFS (hoặc có thể là một số hệ thống tệp FUSE), điều đó có thể là vấn đề.

Dù bằng cách nào, hãy thêm -O/--omit-dir-times vào dòng lệnh của bạn sẽ tránh việc cố gắng đặt thời gian sửa đổi trên thư mục.

+0

Câu trả lời này đã giúp tôi đồng bộ hóa giữa máy Mac và bộ nhớ mạng của tôi. Cảm ơn bạn. – cocoafan

+4

Điều thú vị là tôi đang đồng bộ hóa ext3 để ext3 cả hai hệ điều hành là Linux. Tôi chưa bao giờ phải sử dụng công tắc này trước đây. -O đã làm các trick, nhưng tôi muốn tôi không phải sử dụng nó. –

+3

Cảm ơn! Nó chỉ ra một số máy chủ VPS (ví dụ: xlshosting.nl) sử dụng nội bộ này, có thể gây ra vấn đề với rsync. – Frederik

0

Tôi đã nhìn thấy vấn đề đó khi tôi đang viết thư cho một hệ thống tập tin mà không (đúng) xử lý thời gian - Tôi nghĩ SMB cổ phiếu hoặc FAT hoặc một cái gì đó.

Hệ thống tệp đích của bạn là gì?

+0

Tôi đang dùng mac, rsync'ing tới linux (máy slicehost). – dreeves

+0

Ah, lạ ... Vì bạn đang sử dụng rsync trên mac, tuy nhiên, tôi sẽ cảnh báo bạn: nó không bảo toàn đúng tất cả các thuộc tính tệp OS X, vì vậy những điều xấu có thể xảy ra. Xem, ví dụ: http://blog.plasticsfuture.org/2006/04/23/mac-backup-software-harmful/ –

+0

Bạn có thể sử dụng phiên bản mới nhất từ ​​MacPorts ('sudo port install rsync') và nó sẽ phá vỡ ít hơn. Để kiểm tra: 'rsync --version': rsync phiên bản 3.0.5 giao thức phiên bản 30 ... nối thêm, ACL, xattrs, biểu tượng, đối số, tệp cờ ... (ACL và xattrs là quan trọng những cái này) –

0

Có thể bạn không có đặc quyền đối với một số tệp. Từ tài khoản quản trị viên, hãy thử "sudo rsync -av" Cách khác, kích hoạt tài khoản root và đăng nhập bằng root. Điều đó sẽ cho phép bạn hoàn toàn vòi hệ thống của bạn và sức mạnh vũ phu rsync của bạn! ;-) Tôi không chắc chắn nếu các đề cập ở trên - thuộc tính -extended sẽ giúp đỡ, nhưng tôi đã ném nó trong quá, chỉ cho biện pháp tốt.

68

Sự cố có thể do/foo/bar không được sở hữu bởi quá trình ghi trên hệ thống darwin từ xa (OS X). Giải pháp cho vấn đề là đặt chủ sở hữu đầy đủ trên trang web từ xa.

Vì câu trả lời này đã được bỏ phiếu và do đó hy vọng hữu ích cho một ai đó, tôi sẽ mở rộng nó để làm cho nó rõ ràng hơn.

Lý do tại sao điều này xảy ra là rsync có thể đang cố gắng đặt thời gian sửa đổi tùy ý (mtime) khi sao chép tệp.

Để thực hiện chức năng utime() của hệ thống darwin này, yêu cầu rằng quy trình viết uid hiệu quả là giống như tệp uid hoặc siêu dữ liệu của người dùng, hãy xem opengroup utime's page. Kiểm tra this discussion trên danh sách gửi thư rsync làm tài liệu tham khảo.

+5

Tương tự trên Linux (Debian Bóp trong trường hợp của tôi) ... Nếu tôi không phải là chủ sở hữu của thư mục đích, rsync cung cấp thông báo lỗi "không đặt thời gian". (Có quyền ghi vào thư mục là không đủ.) – ddekany

+1

Tôi bị mắc kẹt trong cùng một vấn đề. Cho đến khi mount NTFS với uid = user. – gavenkoa

+1

Lỗi này đã biến mất cho tôi khi tôi thay đổi chủ sở hữu của thư mục mà tôi đang cố gắng ảnh hưởng (trên máy chủ từ xa) bằng lệnh rsync cho cùng một người dùng khi người dùng cố gắng đăng nhập qua rsync trên tập lệnh Bash cục bộ của tôi. Nói cách khác: Tôi đã cố gắng ghi vào '/ remote/path/to/foo/bar' trên máy chủ từ xa bằng lệnh này:' rsync -avzP --exclude '.DS_Store'/local/path/to/foo/bar/[email protected]:/remote/path/to/foo/bar 'và nhận được các thông báo lỗi tương tự đã biến mất khi tôi tạo' user1' chủ sở hữu của '/ remoe/path/to/foo/bar' như Điều này: '$ chown -R user1/remote/path/to/foo/bar' – racl101

2

Sự cố trong trường hợp của tôi là "điểm gắn nhận" đã được gắn không chính xác. Đó là ở chế độ chỉ đọc (vì một số lý do phụ). Có vẻ như rsync đang sao chép các tập tin, nhưng nó không phải. Tôi đã kiểm tra tệp fstab của mình và thay đổi các tùy chọn gắn kết thành mặc định, gắn lại hệ thống tệp và thực thi lại rsync. Được rồi.

0

Điều này xảy ra với tôi trên một phân vùng kiểu xfs (rw,relatime,seclabel,attr2,inode64,noquota), trong đó các thư mục mà một người dùng khác thuộc nhóm chúng tôi sở hữu đều là thành viên của. Thành viên nhóm đã được thiết lập trước khi đăng nhập và toàn bộ cấu trúc thư mục có thể ghi nhóm. Tôi đã chạy theo cách thủ công sudo chown -R otheruser.group directorysudo chmod -R g+rw directory để xác nhận điều này.

Tôi vẫn không biết tại sao nó không hoạt động ban đầu, nhưng việc sở hữu với sudo chown -R myuser.group directory đã khắc phục sự cố. Có lẽ liên quan đến SELinux?

0

Lỗi này cũng có thể bật lên nếu bạn chạy quá trình rsync cho các tệp không được sửa đổi gần đây trong nguồn hoặc đích ... vì không thể đặt thời gian cho các tệp được sửa đổi gần đây.

Các vấn đề liên quan