Lỗi rsync: không thể thiết lập thời gian trên trên EDT / foo / bar.


194

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

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]

Nó dường như đang hoạt động mặc dù có lỗi đó, nhưng sẽ tốt hơn nếu thoát khỏi điều đó.


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

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

Tôi thấy rằng nếu bạn cũng đã thiết lập một công việc định kỳ đến cùng đích, lỗi này sẽ xuất hiện. Thay đổi thời gian cho công việc định kỳ (crontab) sẽ giúp đi xung quanh nó. Trong trường hợp của tôi, tôi chỉ gặp lỗi này nếu tôi thực hiện rysnc thủ công nếu tôi cũng đã thiết lập một công việc định kỳ.
NelsonGon

Câu trả lời:


286

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

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


8
Điều thú vị là tôi đang đồng bộ hóa ext3 với 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 điều đó, nhưng tôi ước tôi không phải sử dụng nó.
d -_- b

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

2
Tôi có cùng một vấn đề khi kết nối từ Linux ext4 sang Linux ext4: "không thể đặt thời gian: không được phép hoạt động" cho các liên kết tượng trưng , không phải thư mục. -Okhông giúp đỡ, rõ ràng. Điều này đã không xảy ra khi phân vùng sao lưu của tôi là ext3 thay vì ext4.
Marius Gedminas

10
Tôi đã sử dụng rsync -avc và thêm -O không giúp được gì. Sau đó tôi đọc rằng -a là tương đương với -rlptgoD, bao gồm -t mà tôi đoán là ghi đè -O. Vì vậy, đối với tôi, cách khắc phục là sử dụng -rlpgoDvc
dlink

3
@dlink bạn có thể thêm --no-tđể xóa tùy chọn ngụ ý.
Noam Nelke 17/12/18

86

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

Vì câu trả lời này đã được bình chọn, và do đó hy vọng có ích cho 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 utime()chức năng hệ thống của darwin này, yêu cầu uid hiệu quả của quá trình viết giống như tệp uid hoặc siêu người dùng, xem trang của utengroup utime . Kiểm tra cuộc thảo luận này trên danh sách gửi thư rsync làm tài liệu tham khảo.


10
Tương tự trên Linux (Debian Squeeze 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 đưa ra thông báo lỗi "không thể đặt thời gian". (Có quyền viết trên 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

3
Lỗi này đã xảy ra với tôi khi tôi thay đổi chủ sở hữu của thư mục mà tôi đang cố gắng tác động (trên máy chủ từ xa) bằng cách sử dụng lệnh rsync cho cùng một người dùng như người dùng đang 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 viết thư /remote/path/to/foo/bartrên máy chủ từ xa bằng lệnh này: rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ user1@1.2.3.4:/remote/path/to/foo/bar và nhận được thông báo lỗi tương tự đã biến mất khi tôi tạo user1chủ sở hữu /remoe/path/to/foo/barnhư thế này:$ chown -R user1 /remote/path/to/foo/bar
racl101

1
Nếu bạn chia sẻ tệp của mình với những người dùng khác trong một nhóm, ví dụ: bạn sử dụng bit dính thì việc thay đổi chủ sở hữu không thực sự là giải pháp. Chúng tôi không sử dụng -t và thêm -O để ngăn cảnh báo này.
R. van Twisk

1
Bạn có thể mở rộng câu trả lời để giải thích nếu người dùng là một phần của nhóm sở hữu tệp / thư mục nếu điều đó HOẶC không nên hoạt động?
Elijah Lynn

4

Vì @ racl101 đã nhận xét về câu trả lời, vấn đề này có thể liên quan đến chủ sở hữu thư mục . Lệnh rsync phải được thực hiện bởi cùng một người dùng với thư mục của chủ sở hữu. Nếu nó không giống nhau, bạn có thể thay đổi nó.

chown -R userCorrect /remote/path/to/foo/bar

2

Vấn đề trong trường hợp của tôi là "điểm gắn máy thu" được gắn không chính xác. Đó là ở chế độ chỉ đọc (vì một số lý do tuyệt vời). Có vẻ như rsync đang sao chép các tập tin, nhưng thực tế không phải vậy. Tôi đã kiểm tra tệp fstab của mình và thay đổi 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 hiện lại rsync. Tất cả đều ổn rồi.


2

Tôi đã từng gặp vấn đề tương tự. Đối với tôi giải pháp là xóa tập tin từ xa và rsynctạo lại.


0

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

Hệ thống tập tin mục tiêu của bạn là gì?


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

À, lạ thật ... Vì bạn đang sử dụng rsync trên mac, tuy nhiên, tôi nên 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 Điều xấu có thể xảy ra. Xem, ví dụ: blog.platicsfuture.org/2006/04/23/mac-backup-software-harmful
David Wolever

Tuy nhiên, 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 ... chắp thêm, ACL, xattrs, iconv, symtimes, cờ tập tin ... (ACL và xattrs là những giao thức quan trọng)
David Wolever

1
rsync trên Macintosh thực sự đã thiết lập tất cả các thuộc tính tệp và đã thực hiện trong một thời gian khá lâu, xin lưu ý rằng tham chiếu URL "Những điều tồi tệ có thể xảy ra" là ngày 2006!
tgunr

2
Câu trả lời thực sự không nên bao gồm các câu hỏi. Điều này sẽ thích hợp hơn như là một nhận xét.
Brian

0

Có thể là 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", bật tài khoản root và đăng nhập với quyền root. Điều đó sẽ cho phép bạn hoàn toàn vòi hệ thống của bạn và vũ phu rsync của bạn! ;-) Tôi không chắc các thuộc tính được đề cập ở trên có giúp ích gì không, nhưng tôi cũng đã ném nó vào, chỉ là biện pháp tốt.


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 được sở hữu bởi một người dùng khác trong một nhóm mà chúng tôi đều là thành viên. Tư cách 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 theo nhóm. Tôi đã tự chạy 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 ban đầu nó không hoạt động, nhưng đã sở hữu sudo chown -R myuser.group directorynó với việc sửa nó. Có lẽ liên quan đến SELinux?


Trang người đàn ông nói UID của ứng dụng. phải khớp với UID của tệp utime()để hoạt động. Bạn cũng có thể chạy như root và làm điều đó. Nhưng nếu UID của tệp khác nhau, họ sẽ không cho phép bạn thay đổi thời gian thành bất kỳ thứ gì khác ngoài "bây giờ".
Alexis Wilke

Bạn có thể liên kết đến một trang người đàn ông như vậy? Không ai trong số tôi đề cập đến utime().
Sam Brightman

1
linux.die.net/man/2/utime Đoạn thích hợp: "Thay đổi dấu thời gian được cho phép khi: quá trình có đặc quyền phù hợp hoặc ID người dùng hiệu quả bằng ID người dùng của tệp hoặc thời gian là NULL và quá trình có viết quyền cho tập tin. "
Alexis Wilke

0

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

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.