Comportamiento
En aras de la claridad sobre el problema, el siguiente MWE ilustra lo que está sucediendo:
cas$ tar --version
bsdtar 2.6.2 - libarchive 2.6.2
cas$ mkdir o
cas$ touch o/a o/b
cas$ tar cv o > /dev/null
a ./._o
a o
a o/._a
a o/a
a o/._b
a o/b
Entonces, cada archivo y directorio tiene un archivo ._ agregado al archivo tar en el mismo directorio, como dijo mipadi. Este tar, llamémoslo mactar, evita colisiones al ignorar los archivos que comienzan por ._ en la entrada, por ejemplo, con:
mkdir p && touch p/._a p/._b
cas$ tar cv p p/._b > /dev/null
a ./._p
a p
la existencia del archivo p /._ a simplemente es ignorada por tar, y también lo es el archivo p /._ b, a pesar de que se incluye explícitamente en la invocación de la CLI. Por lo tanto, no se pueden producir colisiones.
Control de alquitrán
Si tiene antecedentes de Unix, es probable que no esté contento con este comportamiento. El mactar carece de la documentación esperada: la página del manual es para el archivo de Free BSD regular y no menciona esta idiosincrasia.
Sin embargo, la generación de archivos para las meta forks se puede desactivar al establecer una variable de entorno, por lo que: export COPYFILE_DISABLE=true
.
Historia
No tengo muy claro el momento, pero OSX comenzó con el Free BSD tar regular, luego Apple hizo circular una utilidad adicional, tar_hfs que fue el antepasado de mactar, y luego, creo que con Leopard, cambió /usr/bin/tar
ser mactar.