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 two
tenga 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 filename
busca 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, find
interpretará el argumento ;
como el final del -exec
comando).