Ошибка 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]

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

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

Это произошло со мной в разделе типа 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 исправил его. Возможно, связанные с SELinux?

Ответ 7

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