rsync "Operazione non consentita"


9

Sto provando a sincronizzare così semplicemente un disco rigido USB, il comando è

rsync -az --modify-window=2 /home /mnt/exthd/tmp/

Sto eseguendo questo come root.

ma ricevo molti errori che sembrano correlati a autorizzazioni insufficienti:

rsync: chown "/mnt/exthd/tmp/home/someuser" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bash_logout" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bash_profile" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bashrc" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bash_logout" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bash_profile" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bashrc" failed: Operation not permitted (1)
rsync: symlink "/mnt/exthd/tmp/home/guest/fred2" -> "fred" failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1042) [sender=3.0.7]

Questa è la versione 3.0.7. Ho provato a usare l'opzione --super senza alcun effetto. Qualche idea?


Qual è il file system sul disco USB?
Caleb,

Il disco esterno è formattato come FAT (32)? Non funzionerebbe perché FAT non conosce gli attributi di proprietà dei file.
Sven

@Caleb Immagino che sia FAT, anche se come posso dirlo?
Tim the Enchanter,

Correre mount | grep /mnt/exthddovrebbe dirtelo.
Caleb,

@Caleb dice vfat
Tim the Enchanter,

Risposte:


14

Il file system FAT (che il mount di Linux chiama vfat) non è in grado di memorizzare alcuni dei dati di autorizzazione e proprietà memorizzati sui file sul lato Linux.

Le tue opzioni sembrano essere:

  • Formattare il disco con ext3 / 4 o qualche altro file system che supporti questi attributi. Penso che anche NTFS farebbe il lavoro se condividi con Windows.
  • Archivia quelle proprietà extra usando l' --fake-superopzione in modo che rsync scriva xattrs nel file invece di usare gli attributi del file system
  • Ignora l'errore, quelle proprietà andranno semplicemente perse.
  • Avvolgi il tuo set di dati in un file tar e metti il ​​file tar sul sistema FAT. Tutti gli attributi vengono mantenuti e saranno presenti in caso di estrazione.

--fake-super non funziona neanche, sebbene l'errore cambi da Operazione non consentita (1) a Operazione non supportata (95)
Tim the Enchanter

Hm. È possibile utilizzare --no-ownerper non provare a impostare il proprietario affinché corrisponda. (FAT non ha proprietà del proprietario) e anche possibile --no-perms.
Caleb,

grazie per il tuo aiuto, davvero buono, non funziona ancora sebbene l'errore sia cambiato di nuovo, ogni riga di errore ora ha rsync: failed to write xattr user.rsync.%statall'inizio.
Tim the Enchanter,

3

Rsync sta tentando un'operazione (chown e symlink) che il filesystem non consente o non può eseguire. Immagino che il tuo HD esterno abbia un filesystem FAT.

Se si desidera eseguire un backup corretto, è possibile utilizzare tar.


1
O un filesystem decente.
womble

Il FAT è più simile a un repository di file, non a un filesystem. :-)
Janne Pikkarainen,

Personalmente, odio rsync. Ho visto troppi errori di diverso tipo durante l'utilizzo per copiare file e directory dal mio MAC a una condivisione di rete sul mio router che utilizza il file system NFS. Ho anche dovuto riformattare quell'unità più volte perché rsync ha creato file che erano bloccati e non potevano essere eliminati. Il motivo per cui ho continuato a provare a usare rsync vs cp era che supporta i filtri di esclusione e dovrebbe essere più veloce. Alla fine, ho scritto un paio di classi Java molto semplici - Copy.java e CopyJob.java che è un Runnable per supportare il multi-threading e ha aggiunto il supporto per i filtri ... :)
jrobertsz66
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.