2009-03-20 1 views
136

Я получаю запутанную ошибку от rsync и начальные вещи, которые я нахожу из веб-поиска (также как и все обычные chmod ' ING), не решая ее:Ошибка rsync: не удалось установить время на «/ foo/bar»: операция не разрешена

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] 

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

+2

Есть ли "/ foo/bar" пункт крепления? –

+0

нет, просто нормальный каталог, насколько я могу судить. – dreeves

+0

Просто столкнулся с аналогичной проблемой, хотя мой код ошибки был 22: rsync: не удалось установить время ... Недопустимый аргумент (22). После некоторых проверок выясняется, что мои файлы были датированы последним измененным в 1956 году! Решение: коснитесь всех файлов, проблема решена. :) «find. -print0 | xargs -0 touch» – KIAaze

ответ

210

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

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

+0

Этот ответ помог мне синхронизировать между моим Mac и сетевым хранилищем. Спасибо. – cocoafan

+4

Забавно, что я синхронизирую ext3 до ext3, обе ОС - это Linux. Мне никогда не приходилось использовать этот переключатель раньше. -О сделал трюк, но мне жаль, что мне не нужно было его использовать. –

+3

Спасибо! Оказывается, некоторые хосты VPS (например, xlshosting.nl) используют это внутренне, что может вызвать проблемы с rsync. – Frederik

0

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

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

+0

Я нахожусь на mac, rsync'ing на linux (машина slicehost). – dreeves

+0

Ах, странно ... Так как вы используете rsync на Mac, я должен предупредить вас: он не сохраняет все атрибуты файла OS X, поэтому может произойти Bad Things. См. Например: http://blog.plasticsfuture.org/2006/04/23/mac-backup-software-harmful/ –

+0

Однако вы можете использовать самую последнюю версию из MacPorts ('sudo port install rsync') и он сломается меньше. Чтобы проверить это: 'Rsync --version': Rsync версии 3.0.5 протокол версии 30 ... Append, ACLs, xattrs, Iconv, symtimes, файл-флаги ... (ACL и xattrs являются важным) –

0

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

68

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

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

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

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

+5

То же самое в Linux (Debian Squeeze в моем случае) ... Если я не являюсь владельцем целевого каталога, rsync дает сообщение об ошибке «не удалось установить время». (Недостаточно права на запись в каталоге.) – ddekany

+1

Я попал в одну и ту же проблему. До монтирования NTFS с uid = пользователем. – gavenkoa

+1

Эта ошибка удалилась для меня, когда я сменил владельца каталога, на который я пытался повлиять (на удаленном сервере), используя команду rsync тому же пользователю, что и тот, кто пытается войти через rsync в мой локальный скрипт Bash. Другими словами: я пытался написать на/remote/path/to/foo/bar' на удаленном сервере с помощью этой команды: 'rsync -avzP --exclude '.DS_Store'/local/path/to/foo/bar/[email protected]:/remote/path/to/foo/bar 'и получили те же сообщения об ошибках, которые ушли, когда я сделал' user1' владельцем '/ remoe/path/to/foo/bar', как это: '$ chown -R user1/remote/path/to/foo/bar' – racl101

2

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

0

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^