El primer carácter de la salida de ls -l
es el tipo de archivo: -
para un archivo normal (sea cual sea el tipo de su contenido), d
para un directorio, etc. s
indica un zócalo que es un lugar que los programas pueden utilizar para comunicarse (un servidor escucha las conexiones en el socket, y los clientes pueden comunicarse con el servidor abriendo una conexión en el socket).
Los sockets no tienen contenido, pero su existencia es necesaria para el software que lo utiliza, y sus permisos son importantes. Si el software utiliza un socket, y no lo crea automáticamente cuando se inicia, es necesario copiarlo. (Crear el socket cuando el servidor se inicia es a veces posible porque todo lo relacionado con el socket es conocido, y a veces no es posible porque la ubicación y los metadatos pueden variar).
Parece que hay un error con el sistema de MacOS cp
que no sabe cómo copiar sockets. (Me sale el error "Operation not supported on socket" en Big Sur, así que parece que es una limitación conocida, pero sigue siendo un bug porque cp
debería ser capaz de copiar sockets). Tenga en cuenta que un cp
copia el contenido de los archivos, pero con la opción -R
o -a
, cp
debe copiar los archivos especiales, como las tomas de corriente.
Puede utilizar el rsync
en su lugar:
rsync -aE /path/to/source/ /path/to/destination/
Si tiene instalado GNU coreutils, su cp
(que puede instalarse con un nombre diferente como gcp
) debería ser capaz de hacer el trabajo también.
Tenga en cuenta que la unidad de destino debe utilizar un sistema de archivos que admita archivos especiales. No se puede ejecutar Docker en un sistema de archivos FAT/FAT32/exFAT.