rsync: nie udało się ustawić czasu na „<ścieżka katalogu>”

20

Próbuję zsynchronizować pliki między serwerami, ale otrzymuję ten błąd

rsync: nie udało się ustawić czasu na „/ dept / intranet / dept / atest /.”: Operacja niedozwolona (1)

Czy ktoś może mi pomóc, dlaczego tak jest?

Myślę, że to problem z uprawnieniami.

Oto moje polecenie:

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     
TheVillageIdiot
źródło
czy możesz podać nam więcej informacji? * Twoje polecenie rsync * użytkownik lokalny + użytkownik zdalny * uprawnienia do plików
Brian Clozel
zredagował pytanie.

Odpowiedzi:

26

Właśnie dlatego jesteśmy na tej samej stronie:

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

Następnie dwie rzeczy:

To tylko kwestia systemu plików

Jeśli folderem docelowym jest podłączenie NFS lub jakiś system plików, który nie obsługuje dobrze czasów modyfikacji, to może się zepsuć.

Spróbuj dodać parametr -O(for --omit-dir-times) do swojego polecenia.

Czasy modyfikacji zostaną zachowane, ale pominięte dla katalogów:

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

To jest moje najlepsze przypuszczenie, ponieważ synchronizacja plików wydaje się działać, a błąd występuje podczas synchronizacji czasu mod. W każdym razie, czy naprawdę musisz zachować czasy modyfikacji ? Na -cpliki opcję Przejdź na podstawie sum kontrolnych (czasami tak mod nie ma znaczenia).

Lub jest to problem z pozwoleniem

  • czy użytkownik uruchamiający skrypt ma wystarczające uprawnienia do edycji / zapisu folderu docelowego? (spróbuj ssh -vv test.desktop "touch /dept/intranet/dept/atest/f1/test")
  • czy użytkownik uruchamiający skrypt jest „the Right One ™” (spróbuj ssh -vv [email protected] "touch /dept/intranet/dept/atest/f1/test")

Żadne z powyższych

Uruchom polecenie z -vopcją, dla pełnych.

Brian Clozel
źródło
1
Dziękuję za --omit-dir-timeswskazówkę. Naprawdę pomaga.
JakeGould
1

W moim przypadku rozwiązałem problem, udzielając uprawnień w katalogu nadrzędnym, w którym odbyła się synchronizacja.

W rzeczywistości właściciel katalogu nadrzędnego był inny niż użytkownik wykonujący synchronizację.

Matías
źródło