18

Я пытаюсь rsync файлы с одного сервера на другой, но получаю эту ошибку

rsync: не удалось установить время для «/dept/intranet/dept/atest/.»: операция не разрешена (1)

Может кто-нибудь помочь мне, почему так?

Я думаю, это проблема с разрешениями.

Это моя команда:

RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
REMOTE_HOST=test.desktop

${RSYNC} -crlt -e ${SSH} ${LOCAL_DIR} ${REMOTE_HOST}:${REMOTE_DIR}

LOCAL_DIR = workplace1/f1/
permissions drwxr-xr-x   11 root     root         4096 Mar 19  2009 f1

REMOTE_DIR=/dept/intranet/dept/atest/f1/
permissions :drwxr-xr-x 14 dbld   a1     4096 Mar 19  2009 f1     

3 ответа3

24

Просто так мы на одной странице:

-r recursive
-l preserve links
-c sync based on file checksum
-t preserve modification times

Тогда две вещи:

Это просто файловая система

Если папка назначения - это NFS-монтирование или какая-то файловая система, которая плохо обрабатывает мод-времена, то она ломается.

Попробуйте добавить параметр -O (для --omit-dir-times) в вашу команду.

Время модификации будет сохранено, но не указано для каталогов:

${RSYNC} -crlOt -e ${SSH} ${LOCAL_DIR} ${REMOTE_HOST}:${REMOTE_DIR}

Это мое лучшее предположение, так как синхронизация файлов, кажется, работает, и ваша ошибка происходит во время синхронизации модов. В любом случае, вам действительно нужно сохранить время модификации? Опция -c пропускает файлы на основе контрольной суммы (поэтому время мод не имеет значения).

Или это, собственно, проблема с разрешением

  • имеет ли пользователь, выполняющий скрипт, достаточно прав для редактирования / записи папки назначения? (попробуйте ssh -vv test.desktop "touch /dept/intranet/dept/atest/f1/test")
  • пользователь, выполняющий сценарий, является «Правильным ™» (попробуйте ssh -vv thegooduser@test.desktop "touch /dept/intranet/dept/atest/f1/test")

Ни один из вышеперечисленных

Запустите вашу команду с опцией -v для подробного описания.

5

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

Также прочитайте это: https://stackoverflow.com/questions/667992/rsync-error-failed-to-set-times-on-foo-txt-operation-not-permitted

1

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

На самом деле владелец родительского каталога отличался от пользователя, выполняющего синхронизацию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .