11 votes

Copier récursivement des fichiers et des dossiers, mais en préservant tout tout en obtenant la propriété ?

J'aimerais copier des fichiers et des dossiers de manière récursive depuis un disque externe vers mon disque SSD interne.

Cependant, lorsque je fais un glisser-déposer et, par la suite, lorsque j'utilise les fichiers copiés, on me demande toujours d'entrer les informations d'identification de l'administrateur. Je ne sais pas s'il s'agit d'un chmod ou chown ou les deux (difficultés à faire la différence entre les deux).

Existe-t-il un moyen (via Terminal je suppose) de copier les fichiers :

  • tout en préservant tous les détails des fichiers et des dossiers (c'est-à-dire les horodatages d'origine et toutes les métadonnées nécessaires/utiles) ;
  • mais en obtenant la propriété (de sorte que je n'ai pas à entrer les informations d'identification de l'administrateur à chaque fois que je veux faire une demande d'autorisation). regarder , modifier ou déplacer un fichier).

Je suppose que c'est soit cp ou rsync Mais je dois admettre que j'ai eu du mal à comprendre tous les commutateurs disponibles.

9voto

Phoenix Points 1415

Pour réussir à copier les fichiers en premier lieu, vous devez au moins avoir un accès en lecture aux fichiers à l'emplacement d'origine.

Pour vous assurer que vous pouvez les lire, vous pouvez soit modifier leurs permissions à l'aide de la commande sudo chmod -R o+rx /drag/your/original/folder/from/Finder/here ou, comme suggéré dans les commentaires de votre question, ignorer la propriété du lecteur pour le moment, ce qui laisse les fichiers originaux inchangés.

Pour copier les fichiers, utilisez la commande suivante :

cp -R /drag/your/original/folder/from/Finder/here /drag/your/target/folder/from/Finder/here/

Pour plus d'informations pendant le processus de copie, utilisez la commande suivante :

cp -Rv /drag/your/original/folder/from/Finder/here /drag/your/target/folder/from/Finder/here/

Tenez compte de la barre oblique à la fin du dossier cible ou le dossier cible lui-même sera écrasé par le contenu.

Comprendre les autorisations lors du déplacement/de la copie de fichiers sous UNIX/BSD (le système sous-jacent de Mac OS X est basé sur BSD) :

  1. Lors du déplacement d'un fichier de A à B sur la même partition/volume, la propriété des fichiers ne changera pas.
  2. Lors du déplacement d'un fichier de A à B entre différentes partitions/volumes, la propriété des fichiers sera transférée à l'utilisateur qui les déplace (en appliquant la règle du sudo à la commande de copie, la propriété des fichiers cibles sera fixée à root )
  3. Lors de la copie d'un fichier de A à B quel que soit l'emplacement, appliquera la propriété des fichiers cibles à l'utilisateur qui les copie (en appliquant la règle sudo à la commande de copie, la propriété des fichiers cibles sera fixée à root )

Avec le numéro 1, seuls les descripteurs de fichiers seront modifiés en interne, mais aucun fichier ne sera physiquement déplacé. Avec les étapes 2 et 3, les fichiers sont physiquement copiés vers le nouvel emplacement, l'étape 2 effectuant une seconde étape et les supprimant de l'emplacement d'origine après chaque copie.

MISE À JOUR (pour répondre au commentaire) :

Si vous avez copié les fichiers en utilisant sudo Vous pouvez modifier les permissions des fichiers cibles en utilisant la commande chown y chmod .

Les commandes sont les suivantes :

sudo chown -R <user>[:group] /drag/your/target/folder/from/Finder/here

<user> est le nom de compte de votre utilisateur (pas le nom complet)
:group est un groupe, qui par défaut pour tout utilisateur est staff et pour tout administrateur est admin . Comme il n'est pas nécessaire, vous pouvez l'omettre pour le laisser tel quel (d'où les crochets)

sudo chmod -R 770 /drag/your/target/folder/from/Finder/here

Cela vous donnera, ainsi qu'au groupe principal, des droits d'accès et d'exécution sur les fichiers.

6voto

franksands Points 161

Copier des fichiers sans utiliser chmod ou chown : créez une archive tar.gz de ce que vous voulez copier :

tar cvzf backup.tgz <folder or files you want to copy>

copiez le fichier tgz vers votre destination et développez-le :

tar xvzf backup.tgz

L'avantage de cette méthode est qu'elle fonctionne pour les dossiers, en conservant les permissions de chaque fichier, le dossier peut être de n'importe quelle taille et il peut fonctionner avec différents formats de système de fichiers, par exemple j'ai utilisé un disque dur externe avec exfat pour copier mon tgz d'un mac vers un linux sans aucun problème.

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