30 votes

Peut-on conserver les horodatages lors de la copie de fichiers sous OS X ?

Je souhaite combiner les fichiers de trois Mac en copiant les fichiers de chacun d'entre eux dans une hiérarchie de dossiers unique de ma conception sur un disque dur externe.

Dans mon expérience passée de copie de fichiers dans OSX, parfois les fichiers perdent leurs horodatages Created et Modified, c'est-à-dire qu'ils sont remplacés par l'instant présent au moment de la copie du fichier.

Comment puis-je m'assurer que cela n'arrive pas ?

20voto

Andrew Burns Points 273

Je viens juste de tomber sur ça moi-même, et l'intégré dans cp le gère réellement.

J'ai découvert un tas de vieilles cartes CF dont je voulais récupérer les photos. Mes scripts de traitement regardent le mtime du fichier pour le mettre au bon endroit donc j'avais besoin qu'il soit préservé.

De la page de manuel :

 -p    Cause cp to preserve the following attributes of each source file in the copy: modification time,
       access time, file flags, file mode, user ID, and group ID, as allowed by permissions.  Access
       Control Lists (ACLs) and Extended Attributes (EAs), including resource forks, will also be pre-
       served.

       If the user ID and group ID cannot be preserved, no error message is displayed and the exit value
       is not altered.

       If the source file has its set-user-ID bit on and the user ID cannot be preserved, the set-user-
       ID bit is not preserved in the copy's permissions.  If the source file has its set-group-ID bit
       on and the group ID cannot be preserved, the set-group-ID bit is not preserved in the copy's per-
       missions.  If the source file has both its set-user-ID and set-group-ID bits on, and either the
       user ID or group ID cannot be preserved, neither the set-user-ID nor set-group-ID bits are pre-
       served in the copy's permissions.

Ainsi, en utilisant zsh J'ai pu exécuter ( NO NAME étant le nom de volume de mes cartes) :

cp -rvp /Volumes/NO\ NAME/DCIM/**/*.{JPG,jpg} ~/Desktop/tmp/pics

Je crois que le spécial /**/* est spécifique à ZSH ; cependant, vous pourriez faire quelque chose comme

find /Volumes/WHATEVER -type d -print0 | xargs cp -vp {}/*.JPG /my/out/path

12voto

yoliho Points 340

J'utilise rsync pour faire ce genre de copie. Cependant, notez que la version fournie par Apple est la 2.6.9 et qu'elle comporte des bogues à ce sujet. Vous devez donc obtenir une version construite par un tiers, soit en la construisant vous-même, soit via un gestionnaire de paquets.

par exemple

rsync -aEAX source_dir target_dir

L'option -E copie les ACL et -a préserve les permissions et les temps unix A copie les ACLs et X copie les xattributs (surm rsyn version 3. la version 2 n'a pas AX)

rsync peut également être configuré pour copier sur des machines distantes sans monter les lecteurs.

Il existe des interfaces graphiques pour rsync, par exemple. aRsync . Pour d'autres outils de synchronisation de répertoire, voir ceci question .

4voto

jaume Points 13186

Utilisez pax . La valeur par défaut pax format, appelé ustar Le système de gestion de l'information (SGI), qui préserve les heures de modification et d'accès aux fichiers (parmi d'autres éléments tels que l'ID de l'utilisateur, l'ID du groupe, les bits de mode du fichier et les attributs étendus tels que les commentaires Spotlight et les ACL). Voir pax page de manuel ici pour plus de détails.

Tout d'abord, créez un pax sur chaque Mac et copiez-le sur le disque dur externe comme ceci :

  1. Ouvrez Applications>Utilitaires>Terminal.

  2. Type dans le terminal :

    $ cd

    et faites glisser vers le Terminal le dossier où résident les fichiers à combiner sur ce Mac :

    enter image description here

    Vous pouvez également saisir le nom complet du dossier :

    $ cd /path/to/your\ folder

    Cela changera le dossier actuel en "votre dossier".

  3. Archivez le dossier avec pax :

    $ cd ..
    $ pax -w "your folder" > yourfolder.ustar
  4. Utilisez le Finder pour copier l'archive nouvellement créée. yourfolder.ustar sur le disque dur externe.

Ensuite, extrayez les archives avec pax :

  1. Ouvrez Terminal sur le Mac sur lequel est branché le disque dur externe USB.

  2. Changez le dossier actuel pour la hiérarchie de dossier unique sur le disque dur externe avec la commande cd comme expliqué ci-dessus :

    $ cd /Volumes/externalHDD/path/to/single \folder
    $ ls
    yourfolder.ustar
    yourfolder2.ustar
    yourfolder3.ustar
  3. Extrayez les archives :

    $ pax -r -p e < yourfolder.ustar
    $ pax -r -p e < yourfolder2.ustar
    $ pax -r -p e < yourfolder3.ustar
    $ ls
    your folder
    your folder 2
    your folder 3
  4. Déplacez les fichiers avec le Finder si nécessaire (le Finder conserve les temps de modification et d'accès des fichiers au sein d'un même volume).

(J'ai testé cette procédure sur OS X 10.8 (Mountain Lion)).

2voto

Igor Zelaya Points 2266

Compressez-les avec zip ou sélectionnez-les avec ctrl-clic ou clic droit et choisissez Compresser. Copiez les fichiers compressés sur votre système cible et ouvrez-les là.

Si vous le pouvez, formatez votre disque externe comme un système de fichiers Mac OS, et non FAT.

0voto

Ben Points 1

J'ai essayé ce que jaume a suggéré plus haut (merci jaume !), mais pour moi (sur mon très vieux matériel) la création de fichiers .ustar prenait trop de temps et j'ai perdu patience... des heures après.

J'ai donc lu les exemples ici et adapté un exemple comme suit :

pax -r -u -w [source directory] [destination directory]

Dans mon cas, j'ai changé de répertoire avec la commande 'cd' et vérifié que le terminal pouvait voir mon répertoire source 'User' avec la commande 'ls' avant de l'exécuter :

pax -r -u -w User /Volumes/T7

Le résultat est que tous les fichiers conservent leur date originale de modification/création - mais les répertoires ont la date d'aujourd'hui comme date de modification et la date originale comme date de création.

C'était assez bon pour moi !

P.S. Je ne suis pas sûr que pax soit intégré dans Darwin car j'ai installé TigerBrew avant de commencer, mais j'ai fait tout cela sur OS X 10.7.5.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X