comment dire à rsync de conserver l'horodatage des files lorsque l'arborescence source a un point monté

Relatif à cette question

Brève description du problème:

Lorsque l'arborescence source a un point monté à l'intérieur, les horodatages des files à l'intérieur de ce point monté lorsqu'ils sont copiés dans l'arborescence cible ne sont pas conservés, même avec l'option -a

Description détaillée:

Supposons que c'est l'tree source:

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

où les data/ ci data/ dessus est monté disque USB externe. Tout est système de files ext4 . Tout dans la source appartient à me .

BACKUP s'est également avéré être un sharepoint assembly, le disque USB de sauvegarde.

Après avoir rsync -av --delete /home/me/ /home/BACKUP/ command rsync -av --delete /home/me/ /home/BACKUP/ , j'ai trouvé que /home/BACKUP/data/ et tout ce qui se trouve en dessous a l'horodatage actuel, comme si ces files étaient créés maintenant pas l'horodatage sur les files dans /home/me/data/ . D'autres files et dossiers extérieurs aux data ont conservé l'horodatage OK.

La question est: comment utiliser rsync dans le paramètre ci-dessus pour lui dire de préserver les horodatages sur tous les files et dossiers même sur les files et les dossiers sur un point monté?

J'utilise:

 >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 

de l' man rsync :

  -t, --times preserve modification times 

EDIT – pour améliorer cette réponse car il n'est pas immédiatement évident pourquoi cela n'a pas aidé OP:

OP copy des files d'un système de files à un autre et souhaite conserver c-time . La plupart des gens include que c-time signifie «créer du time», ce qui est incorrect sur la plupart des systèmes UNIX / Linux (les filesystems Windows suivent les time «création» ou «naissance»).

Pour la plupart, sous UNIX et Linux, c-time est l'horodatage utilisé pour save le dernier hangar de l'inode. Un inode change si l'un de ses attributes est mis à jour:

  • création (cas de l'OP)
  • mode (permissions)
  • propriétaire / groupe
  • nombre de liens durs
  • etc. (appel système stat ())

OP ne peut pas conserver le c-time de leur file lorsqu'ils sont amenés sur un nouveau système de files. La création de ces files dans les nouveaux filesystems est l'une des conditions listées ci-dessus (création d'inode / file).

/MODIFIER

comme l'a déjà dit hr3miller, -a (ou –archive) est égal à -rlptgoD et inclut déjà le time de synchronisation.

Toutefois, lorsque rsync copy des données, par exemple. un assembly NFS / FAT32 / NTFS où la conservation de l'user et du propriétaire échoue, rsync n'essaiera pas de définir l'heure. Rsync avertira avec quelque chose comme

 rsync: chown "/mnt/backup/postgres/hourly.0/primary/var" failed: Operation not permitted (1) 

Conserver ainsi l'user et le groupe en utilisant

 -rlptD 

au lieu de

 -rlptgoD 

N'utilisez ceci que lorsque vous ne conservez pas le propriétaire et que le groupe est une option pour vous. Notez que la préservation des liens symboliques et d'autres fonctionnalités peut également triggersr ce comportement. Vous devrez parcourir la page de manuel pour chaque fonction rsync (-r -l -p -t -g -o -D) que vous voulez sauvegarder.

J'utilise rsync -az et bien sûr ça me préserve du time de modification. Je l'ai vérifié à l'instant.