rsync: не удалось установить время для "<путь к каталогу>"
Я пытаюсь 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 ответа
Просто так мы на одной странице:
-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
вариант, для многословия.
Добавьте -O (--omit-dir-times) в вашу командную строку, чтобы избежать попыток установить время изменения каталогов.
Также прочтите это: https://stackoverflow.com/questions/667992/rsync-error-failed-to-set-times-on-foo-txt-operation-not-permitted
В моем случае я решил проблему, предоставив разрешения для родительского каталога, в котором была выполнена синхронизация.
На самом деле владелец родительского каталога был другим, чем пользователь, выполняющий синхронизацию.