¿Cómo puedo convertir un enlace físico en un archivo normal?

¿Cómo puedo convertir un enlace físico en un archivo normal?

Me doy cuenta de que cada archivo es un vínculo físico. Esto es lo que quiero decir precisamente: si un inodo tiene más de un archivo apuntando a él, ¿cómo puedo copiar el inodo para que cada archivo apunte a un inodo separado con el mismo contenido?

Por ejemplo:

echo "Example" > one
ln one two

¿Cómo puedo hacer que el archivo twotenga el mismo contenido que one, sin compartir un inodo? Me gustaría "reduplicar", si lo desea, los archivos.

Respuesta1

Esto se puede lograr con el comando

find -samefile filename -exec sed -i ';;' {} \;

o si ahora tienes el número de inodo del archivo

find -inum inode -exec sed -i ';;' {} \;

Tenga en cuenta que ambos comandos solo encuentran los archivos con inodos coincidentes en subdirectorios del directorio de trabajo actual. Si necesita buscar todos los archivos en su sistema de archivos, deberá ejecutar este comando desde el directorio raíz.

La primera parte find -samefile filenamebusca todos los archivos que comparten el mismo inodo. Luego se ejecuta, sed -i ';;'lo que copia el archivo a un archivo con el mismo nombre (tenga en cuenta que usamos el script sed ';;'en lugar de ';'; de lo contrario, findinterpretará el argumento ;como el final del -execcomando).

información relacionada