GNU/Linux >> Linux Esercitazione >  >> Linux

Come dire a Rsync di preservare il timestamp sui file quando l'albero di origine ha un punto montato?

In relazione a questa domanda

Breve descrizione del problema:

Quando l'albero di origine ha un punto di montaggio al suo interno, i timestamp sui file all'interno di quel punto di montaggio quando vengono copiati nell'albero di destinazione non vengono conservati anche quando si utilizza -a opzione

Descrizione dettagliata:

Supponiamo che questo sia l'albero dei sorgenti:

                       /home/                           /home/
                         |                                |
                        me/                             BACKUP/
                         |                                |
                    +----+----------+                +----+-------+
                    |    |          |                |    |       |
                 data/  foo.txt    boo.txt         data/ foo.txt boo.txt
                    |                                |
                   a.txt                           a.txt

dove data/ sopra è montato un disco USB esterno. Tutto è ext4 file system. Tutto nella fonte è di proprietà del mio me .

BACKUP era anche un punto di montaggio, il disco USB di backup.

Dopo aver eseguito questo comando rsync -av --delete /home/me/ /home/BACKUP/ , ho trovato che /home/BACKUP/data/ e tutto quello che c'è sotto ha il timestamp corrente, come se questi file fossero stati creati ora, e non il timestamp sui file in /home/me/data/ . Altri file e cartelle al di fuori di data il timestamp è stato conservato correttamente.

La domanda è:come usare rsync nell'impostazione precedente per dirgli di preservare i timestamp su tutti i file e le cartelle anche su file e cartelle su un punto montato?

Sto usando:

>uname -a
Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux

>rsync -v
rsync  version 3.0.9  protocol version 30

Risposta accettata:

da man rsync :

   -t, --times                 preserve modification times

EDIT - per migliorare questa risposta poiché non è immediatamente ovvio il motivo per cui ciò non ha aiutato OP:

OP sta copiando file da un filesystem a un altro e vuole preservare c-time . La maggior parte delle persone capisce c-time significa "creare il tempo" che non è corretto sulla maggior parte dei sistemi UNIX/Linux (i filesystem di Windows tengono traccia dei tempi di "creazione" o "nascita").

Per la maggior parte, in UNIX e Linux, c-time è il timestamp utilizzato per registrare l'ultimo inode "C 'impicca. Un inode cambia se uno dei suoi attributi viene aggiornato:

  • creazione (caso di OP)
  • modalità (autorizzazioni)
  • proprietario/gruppo
  • conteggio hard link
  • ecc. (chiamata di sistema stat())

OP non può preservare il c-time dei loro file quando vengono portati su un nuovo filesystem. La creazione di questi file nei nuovi filesystem è una delle condizioni sopra elencate (creazione di inode/file).

/MODIFICA


Linux
  1. Come RSYNC un singolo file?

  2. Come programmare i file dell'albero dei dispositivi Linux .dts?

  3. Come dire a Dolphin quali file nascondere?

  4. Come posso escludere i file per impostazione predefinita con rsync?

  5. Come aggiungere al gruppo quando il nome ha uno spazio?

Come escludere file e directory con Rsync

Come trasferire file con Rsync su SSH

Come eseguire il backup di file e directory utilizzando Rsync in Linux

Rsync Mostra la barra di avanzamento durante la copia di file in Linux

Come configurare un backup con rsync su Ubuntu 18.04

Come fare in modo che il comando Linux ls mostri il secondo nel timestamp