Come mantenere la "data originale" creata durante la copia tramite terminale?

4

Ci sono molte domande online che chiedono come rendere i comandi rsync e cp per la copia di un file mantenendo l'attributo "data di creazione" uguale all'originale invece dell'orario di copia. Comprendo che si tratta di informazioni aggiunte da Mac ed è separato dall'attributo metadata del file creato "del file. Ad ogni modo, mentre giocavo con rsync -a , ha fatto tutto quello che volevo tranne che, come tutte le note online, ha cambiato la "data di creazione" al momento della copia invece della marca originale. Con rsync e cp cambia a causa di " una modifica dell'inode ". Comando-c comando-v, tuttavia, mantiene l'ora "data di creazione" lo stesso.

Ecco la mia domanda: come è che Cmd - C Cmd - V mantiene l'attributo data di creazione uguale sulla copia, ma nessun comando nel terminale produrrà questo risultato? Se Cmd - C Cmd - V può farlo, sembra che ci debba essere qualche comando nel Terminale questo lo replica?

    
posta Adam 10.08.2015 - 08:20
fonte

3 risposte

2

Come indicato POSIX non definisce "data di creazione" e gli strumenti della riga di comando sono scritti sugli standard POSIX ma possono estendere gli standard. Il comportamento di rsync e cp è quello che ci si aspetta. Alcuni file system e kernel estendono gli standard e includono birthtime o btime.

Supponendo che stai copiando file sullo stesso file system, OS X dispone di strumenti che tenteranno di preservare il tempo di nascita ("data di creazione"). Puoi utilizzare pax o hardlink file e la "data di creazione" verrà conservata. Strumenti meno affidabili sono ditto o cp con l'opzione p (almeno sul mio sistema, sospetto bug in HFS +).

Se vuoi copiare i file su un altro file system, devi compilare rsync con le patch fileflags, crtimes, hfs-compression e rsync in grado di gestire i metadati di OS X e preservare il tempo di nascita del file originale sul nuovo file.

    
risposta data 10.08.2015 - 15:57
fonte
2

Il 10.10.4, utilizzando cp -p / percorso / a / origine / percorso / a / destinazione il tempo creato viene mantenuto. Più in particolare, nel Finder, la data di creazione e la data di modifica sono conservate, mentre la data aggiunta avrà il tempo di copia.

    
risposta data 10.08.2015 - 16:10
fonte
1

Ci sono molte ragioni per cui si preferirebbe usare RSync invece di cp. La versione predefinita di RSync su MacOS è la 2.6.9, che ha più di 12 anni ad oggi, e ha diversi bug noti, e questo è uno di questi. Apple non includerà le versioni aggiornate sulle nuove versioni di Mac OSX a causa di materiale relativo a GPL3.

Per risolvere questo problema:

  1. Installa homebrew sul tuo Mac, se non ce l'hai già

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  2. Installa la nuova versione di rsync disponibile su brew:

    brew install rsync

  3. Certifica che la tua versione rsync è almeno 3.1.3:

    fabiosl@macpro ~ $ rsync --version

  4. Copia i tuoi file usando --times e --crtimes

    rsync -times --crtimes /sourcedirectory /destinationdirectory

risposta data 08.11.2018 - 04:52
fonte

Leggi altre domande sui tag