Come posso evitare la manipolazione dei dati nei nomi dei file durante la copia di file tra Linux e macOS?

2

Quando abbiamo trasportato un filesystem CMS e mysql dump via rsync da un server Linux a un altro server Linux, abbiamo usato un MacOS nel mezzo per memorizzare temporaneamente i dati. Dopo che il CMS era attivo sull'altro server Linux, tutti i file di immagine statici, se disponibili. Ma tutti i nomi di file con dieresi tedesca non sono stati trovati dal CMS, sebbene siano visibili e accessibili. Abbiamo subito scoperto che esattamente questo succede:

Quando creo un nome file con umlaut tedeschi su Linux in questo modo:

linux$ mkdir umlauttest
linux$ touch umlauttest/äöü

E poi vai su un Mac e rilasci un rsync per copiare la directory sul mio Mac ...

mac$ rsync -a user@linux:umlauttest .

E poi copiarlo dal mio Mac a Linux:

mac$ rsync -a umlauttest/. user@linux:umlauttest2

Quindi ho davvero un problema sul mio Linux, perché il nome del file è un po 'rotto.

linux$ diff umlauttest umlauttest2
Only in umlauttest2: äöü
Only in umlauttest: äöü

Cioè, perché MacOS sta infatti convertendo i caratteri del nome file in caratteri compositi Unicode, che è in realtà qualcosa che io chiamo metamagaggi maneggevoli. Questo comportamento si verifica anche utilizzando scp per copiare i file.

C'è un modo per impedire che ciò accada?

    
posta itsafire 21.12.2016 - 11:51
fonte

1 risposta

2

Usa l'opzione --iconv per rsync per specificare come i nomi dei file sono codificati sugli host locali e remoti - questo potrebbe aiutarti a mantenere intatti i nomi dei file.

Quando copi dal server Linux al Mac aggiungi quanto segue al comando rsync :

--iconv=utf-8,utf-8-mac 

Quando si copia dal Mac al server Linux, utilizzare quanto segue:

--iconv=utf-8-mac,utf-8 

Nota che hai bisogno di una versione relativamente nuova di rsync (> 3.0) per avere l'opzione --iconv . Apple fornisce solo una vecchia versione, quindi è necessario visitare un altro sito, ad es. un gestore di pacchetti come Macports o Homebrew

    
risposta data 21.12.2016 - 12:01
fonte

Leggi altre domande sui tag