11 votes

MacOS ne peut pas copier les fichiers "spéciaux"... ils sont marqués d'un "s".

Leur régime d'autorisation est le suivant srwxr-xr-x .

Je ne peux pas les copier, car je reçois le message d'erreur suivant.

cp : impossible de créer le fichier spécial '/Volumes/Samsung_T5/Dockers/vms/0/00000002.00001003' : Opération non autorisée

J'ai essayé avec sudo mais les fichiers ne sont toujours pas copiés, bien que le message soit un peu différent. Cette fois-ci, il est écrit "Invalid argument".

Et oui, j'essaie de déplacer le dossier Docker vers un disque externe car il remplit mon disque dur.

18voto

Abramodj Points 1771

Il s'agit d'un (s)ocket type de fichier. En tant que tel, il n'est associé à aucune donnée persistante et il est donc inutile de le copier.

Les sockets permettent la communication entre deux processus différents sur la même machine ou sur des machines différentes. Cette communication s'effectue à l'aide de descripteurs de fichiers standard d'Unix/Linux, en utilisant la fonction read() y write() les appels système.

16voto

staffan Points 3299

Le premier caractère dans la sortie de ls -l est le type de fichier : - pour un fichier ordinaire (quel que soit le type de son contenu), d pour un répertoire, etc. s indique un prise de courant qui est un emplacement que les programmes peuvent utiliser pour communiquer (un serveur écoute les connexions sur le socket, et les clients peuvent communiquer avec le serveur en ouvrant une connexion sur le socket).

Les sockets n'ont pas de contenu, mais leur existence est nécessaire pour le logiciel qui les utilise, et leurs permissions comptent. Si un logiciel utilise un socket, et qu'il ne le crée pas automatiquement au démarrage, vous devez le copier. (La création du socket au démarrage du serveur est parfois possible car tout ce qui concerne le socket est bien connu, et parfois impossible car l'emplacement et les métadonnées peuvent varier).

Il semble qu'il y ait un bug avec le système MacOS. cp qu'il ne sait pas comment copier les sockets. (J'obtiens l'erreur "Operation not supported on socket" sur Big Sur, donc il semble qu'il s'agisse d'une limitation connue, mais c'est quand même un bogue car cp devrait être capable de copier les sockets). Notez qu'un simple cp copie le contenu des fichiers, mais avec l'option -R o -a , cp doit copier les fichiers spéciaux tels que les sockets.

Vous pouvez utiliser le rsync à la place :

rsync -aE /path/to/source/ /path/to/destination/

Si GNU coreutils est installé sur votre ordinateur, la fonction cp (qui peut être installée sous un nom différent tel que gcp ) devrait pouvoir faire l'affaire aussi bien.

Notez que le lecteur cible doit utiliser un système de fichiers qui prend en charge les fichiers spéciaux. Vous ne pouvez pas exécuter Docker sur un système de fichiers FAT/FAT32/exFAT.

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