Errore rsync: impossibile impostare i tempi su “/ foo / bar”: operazione non consentita


194

Ricevo un errore confuso da rsync e le cose iniziali che trovo dalle ricerche sul web (così come tutti i soliti chmod'ing) non lo stanno risolvendo:

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]

Sembra funzionare nonostante quell'errore, ma sarebbe bello liberarsene.


no, solo una directory normale per quanto ne so.
Dreeves,

Ho appena riscontrato un problema simile, sebbene il mio codice di errore fosse 22: rsync: impossibile impostare i tempi su ... Argomento non valido (22). Dopo alcuni controlli risulta che i miei file sono stati datati come ultima modifica nel 1956! Soluzione: toccare tutti i file, problema risolto. :) "trova. -print0 | xargs -0 touch"
KIAaze il

Trovo che se hai anche impostato un lavoro cron sulla stessa destinazione, verrà visualizzato questo errore. Cambiare il tempo per il cron job (crontab) ti aiuterà ad aggirarlo. Nel mio caso, ottengo questo errore solo se eseguo un rysnc manuale se ho anche impostato un processo cron.
Nelson Gon,

Risposte:


286

Se /foo/barè su NFS (o forse su un filesystem FUSE), questo potrebbe essere il problema.

In entrambi i casi, l'aggiunta -O/ --omit-dir-timesalla riga di comando eviterà di provare a impostare i tempi di modifica nelle directory.


8
La cosa divertente è che sto sincronizzando ext3 con ext3 entrambi i sistemi operativi sono Linux. Non ho mai usato questo interruttore prima. -O ha fatto il trucco, ma vorrei non doverlo usare.
d -_- b

3
Grazie! Si scopre che alcuni host VPS (ad esempio xlshosting.nl) lo usano internamente, il che può dare problemi con rsync.
Frederik,

2
Ho lo stesso problema rsyncing da Linux ext4 a Linux ext4: un "impossibile impostare tempi: operazione non consentita" per i collegamenti simbolici , non per le directory. -Onon aiuta, ovviamente. Questo non accadeva quando la mia partizione di backup era ext3 anziché ext4.
Marius Gedminas,

10
Stavo usando rsync -avc e l'aggiunta di -O non mi aiutava. Ho quindi letto che -a era l'equivalente di -rlptgoD che include -t che suppongo sia prioritario -O. Quindi per me la soluzione era usare -rlpgoDvc
dlink il

3
@dlink è possibile aggiungere --no-tper rimuovere l'opzione implicita.
Noam Nelke,

86

Il problema è probabilmente dovuto al fatto che / foo / bar non appartiene al processo di scrittura su un sistema darwin remoto (OS X). Una soluzione al problema è impostare un proprietario adeguato sul sito remoto.

Dal momento che questa risposta è stata votata, e quindi si spera sia stata utile a qualcuno, la sto estendendo per renderla più chiara.

Il motivo per cui ciò accade è che rsync sta probabilmente cercando di impostare un tempo di modifica arbitrario (mtime) durante la copia dei file.

Per fare ciò, la utime()funzione di sistema di darwin richiede che il processo di scrittura efficace sia uguale al file uid o quello dell'utente super, vedere la pagina di opengroup utime . Controlla questa discussione sulla mailing list di rsync come riferimento.


10
Lo stesso su Linux (Debian Squeeze nel mio caso) ... Se non sono il proprietario della directory di destinazione, rsync visualizza il messaggio di errore "Impossibile impostare i tempi". (Avere il permesso di scrivere nella directory non è abbastanza.)
ddekany il

1
Ho intrappolato nello stesso problema. Fino al montaggio di NTFS con uid = user.
gavenkoa,

3
Questo errore è scomparso per me quando ho cambiato il proprietario della directory che stavo cercando di influenzare (sul server remoto) usando il comando rsync per lo stesso utente di quello che stava tentando di accedere tramite rsync sul mio script Bash locale. In altre parole: stavo cercando di scrivere /remote/path/to/foo/barsul server remoto con questo comando: rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ user1@1.2.3.4:/remote/path/to/foo/bar e ho ricevuto gli stessi messaggi di errore che sono andati via quando ho creato user1il proprietario in /remoe/path/to/foo/barquesto modo:$ chown -R user1 /remote/path/to/foo/bar
racl101

1
Se condividi i tuoi file con altri utenti in un gruppo, ad esempio usi la parte adesiva, cambiare proprietario non è davvero la soluzione. Non usiamo -t e aggiungiamo -O per evitare questo avviso.
R. van Twisk,

1
Puoi espandere la risposta per approfondire se un utente fa parte di un gruppo che possiede il file / dir se questo O non dovrebbe funzionare?
Elijah Lynn,

4

Poiché @ racl101 ha commentato una risposta, questo problema potrebbe essere correlato al proprietario della cartella . Il comando rsync deve essere eseguito dallo stesso utente di quello del proprietario della cartella. Se non è lo stesso, puoi cambiarlo.

chown -R userCorrect /remote/path/to/foo/bar

2

Il problema nel mio caso era che il "mountpoint del ricevitore" non era montato correttamente. Era in modalità di sola lettura (per qualche motivo sconosciuto). Sembrava che rsync stesse copiando i file, ma non lo era. Ho controllato il mio file fstab e ho cambiato le opzioni di mount sui valori predefiniti, rieseguendo il mount del file system ed eseguendo di nuovo rsync. Tutto bene allora.


2

Ho avuto lo stesso problema. Per me la soluzione è eliminare il file remoto e lasciarlo rsynccreare di nuovo.


0

Ho visto quel problema quando scrivo su un filesystem che non gestisce (correttamente) i tempi - penso che le condivisioni SMB o FAT o qualcosa del genere.

Qual è il tuo filesystem di destinazione?


Sono su un Mac, sto sincronizzando su Linux (una macchina slicehost).
Dreeves,

Ah, strano ... Dato che stai usando rsync sul Mac, però, dovrei avvisarti: non conserva correttamente tutti gli attributi del file OS X, quindi potrebbero succedere cose cattive. Vedi, ad esempio: blog.plasticsfuture.org/2006/04/23/mac-backup-software-harmful
David Wolever

Puoi, tuttavia, utilizzare la versione più recente di MacPorts ( sudo port install rsync) e si romperà di meno. Per verificarlo:: rsync --versionprotocollo rsync versione 3.0.5 versione 30 ... append, ACLs, xattrs, iconv, symtimes, file-flags ... (ACLs e xattrs sono quelli importanti)
David Wolever

1
rsync su Macintosh in effetti imposta tutti gli attributi di file e lo fa da un po 'di tempo, ti preghiamo di notare che l'URL che fa riferimento a "Potrebbero succedere cose brutte" è datato 2006!
tgunr

2
Le risposte non dovrebbero davvero includere domande. Questo sarebbe più appropriato come commento.
Brian,

0

È possibile che non si disponga di privilegi per alcuni file. Da un account amministratore, prova "sudo rsync -av" In alternativa, abilita l'account root e accedi come root. Ciò dovrebbe permetterti di intubare completamente il tuo sistema e forzare bruscamente il tuo rsync! ;-) Non sono sicuro se i suddetti attributi --extended-attributi saranno di aiuto, ma l'ho anche inserito, solo per buona misura.


0

Questo è successo a me su una partizione di tipo xfs (rw,relatime,seclabel,attr2,inode64,noquota), in cui le directory erano di proprietà di un altro utente in un gruppo di cui eravamo entrambi membri. L'appartenenza al gruppo era già stata stabilita prima dell'accesso e l'intera struttura della directory era scrivibile in gruppo. Ho eseguito manualmente sudo chown -R otheruser.group directorye sudo chmod -R g+rw directoryper confermare questo.

Non ho ancora idea del perché in origine non funzionasse, ma prendere la proprietà con sudo chown -R myuser.group directoryrisolto. Forse relativo a SELinux?


La pagina man dice l'UID dell'app. deve funzionare con l'UID del file per utime()funzionare. Puoi anche eseguire come root e farlo. Ma se l'UID del file è diverso, non ti permettono di cambiare l'ora in nient'altro che "adesso".
Alexis Wilke,

Puoi collegarti a una tale pagina man? Nessuna delle mie menzioni utime().
Sam Brightman,

1
linux.die.net/man/2/utime Il paragrafo pertinente: "La modifica dei timestamp è consentita quando: il processo ha i privilegi appropriati o l'ID utente effettivo è uguale all'ID utente del file, oppure i tempi sono NULL e il processo ha autorizzazione di scrittura per il file. "
Alexis Wilke, il

0

Questo errore potrebbe anche apparire se si esegue il processo rsync per i file che non sono stati modificati di recente nell'origine o nella destinazione ... perché non è possibile impostare l'ora per i file modificati di recente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.