ошибка rsync: не удалось установить время на "/foo / bar": операция не разрешена


Я получаю запутанную ошибку от rsync, и начальные вещи, которые я нахожу из веб-поиска (а также все обычные chmod'ING), не решают ее:

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]

Это, кажется, работает, несмотря на эту ошибку, но было бы неплохо избавиться от этого.

7 149

7 ответов:

Если /foo/bar находится на NFS (или, возможно, в какой-то файловой системе FUSE), это может быть проблемой.

в любом случае, при добавлении -O/--omit-dir-times чтобы ваша командная строка не пыталась установить время изменения в каталогах.

проблема, вероятно, связана с тем, что /foo/bar не принадлежит процессу записи на удаленной системе darwin (OS X). решение проблемы состоит в том, чтобы установить адекватного владельца на удаленном сайте.

поскольку этот ответ был проголосован, и поэтому, надеюсь, был полезен кому-то, я расширяю его, чтобы сделать его более ясным.

причина, по которой это происходит, заключается в том, что rsync, вероятно, пытается установить произвольное время модификации (mtime) при копировании файлы.

для выполнения этой функции системы Дарвина utime () требуется, чтобы эффективный uid процесса записи был либо таким же, как файл uid, либо суперпользователем, см. страница opengroup utime. Проверьте эта дискуссия в списке рассылки rsync в качестве ссылки.

проблема в моем случае заключалась в том, что" точка крепления приемника " была неправильно установлена. Он был в режиме только для чтения (по какой-то причине). Похоже, rsync копировал файлы, но это было не так. Я проверил свой файл fstab и изменил параметры монтирования на default, переустановил файловую систему и снова выполнил rsync. Все в порядке.

Я видел эту проблему, когда я пишу в файловую систему, которая не (правильно) обрабатывает время-я думаю, что SMB shares или FAT или что-то еще.

какова ваша целевая файловая система?

возможно, у вас нет прав доступа к некоторым файлам. Из учетной записи администратора попробуйте "sudo rsync-av" поочередно, включите учетную запись root и войдите в систему как root. Это должно позволить вам полностью шлангом вашей системы и грубой силы вашего rsync! ;-) Я не уверен, что вышеупомянутые --расширенные-атрибуты помогут, но я тоже бросил его, просто для хорошей меры.

Это случилось со мной на разделе типа xfs (rw,relatime,seclabel,attr2,inode64,noquota), где каталоги, принадлежащие другому пользователю в группе, в которой мы оба были членами. Членство в группе уже было установлено до входа в систему, и вся структура каталогов была доступна для записи в группу. Я должен был вручную запустить sudo chown -R otheruser.group directory и sudo chmod -R g+rw directory, чтобы подтвердить это.

Я до сих пор не знаю, почему это не сработало изначально, но взяв на себя ответственность с sudo chown -R myuser.group directory исправил. Возможно, это связано с Селинуксом?

эта ошибка также может всплывать при запуске процесса rsync для файлов, которые не были недавно изменены в источнике или месте назначения...потому что не может установить время для недавно измененных файлов.