Lié à cela question
Brève description du problème:
Lorsque l'arborescence source a un point monté à l'intérieur, les horodatages des fichiers à l'intérieur de ce point monté lorsqu'ils sont copiés dans l'arborescence cible ne sont pas conservés même lorsque vous utilisez -a
option
Description détaillée:
Supposons qu'il s'agit de l'arborescence source:
/home/ /home/
| |
me/ BACKUP/
| |
+----+----------+ +----+-------+
| | | | | |
data/ foo.txt boo.txt data/ foo.txt boo.txt
| |
a.txt a.txt
où data/
ci-dessus est monté un disque USB externe. Tout est ext4
système de fichiers. Tout dans la source appartient à mon me
.
BACKUP
était également un point de montage, le disque USB de sauvegarde.
Après avoir émis cette commande rsync -av --delete /home/me/ /home/BACKUP/
, Je l'ai trouvé /home/BACKUP/data/
et tout ce qui se trouve en dessous a l'horodatage actuel, comme si ces fichiers avaient été créés maintenant, et non l'horodatage des fichiers dans /home/me/data/
. Les autres fichiers et dossiers en dehors de data
ont bien conservé l'horodatage.
La question est: comment utiliser rsync
dans le paramètre ci-dessus pour lui dire de conserver les horodatages sur tous les fichiers et dossiers, même sur les fichiers et 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 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 copie des fichiers d'un système de fichiers à un autre et souhaite conserver c-time
. La plupart des gens comprennent c-time
pour signifier "créer l'heure", ce qui est incorrect sur la plupart des systèmes UNIX/Linux (les systèmes de fichiers Windows suivent les heures de "création" ou de "naissance").
Pour la plupart, sous UNIX et Linux, c-time
est l'horodatage utilisé pour enregistrer le dernier inode ' [~ # ~] c [~ # ~] ' hange. Un inode change si l'un de ses attributs est mis à jour:
OP ne peut pas conserver le c-time
de leurs fichiers lorsqu'ils sont transférés sur un nouveau système de fichiers. La création de ces fichiers dans les nouveaux systèmes de fichiers est l'une des conditions listées ci-dessus (création d'inode/fichier).
/ÉDITER
comme l'a déjà dit hr3miller, -a (ou --archive) est égal à -rlptgoD et inclut déjà le temps de synchronisation.
Cependant, lorsque rsync copie des données vers, par exemple. un montage NFS/FAT32/NTFS où la préservation de l'utilisateur et du propriétaire échoue, rsync n'essaiera pas de régler l'heure. Rsync avertira avec quelque chose comme
rsync: chown "/mnt/backup/postgres/hourly.0/primary/var" failed: Operation not permitted (1)
Par conséquent, omettez de préserver l'utilisateur et le groupe en utilisant
-rlptD
au lieu de
-rlptgoD
Utilisez-le uniquement lorsque vous ne conservez pas le propriétaire et le groupe est une option pour vous. Notez que la préservation des liens symboliques et d'autres fonctionnalités peut également déclencher ce comportement. Vous devrez parcourir la page de manuel pour chaque fonctionnalité rsync (-r -l -p -t -g -o -D) que vous souhaitez sauvegarder.