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

StackOverflow https://stackoverflow.com/questions/667992

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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]

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Это случилось со мной на разделе типа 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?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top