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.