Como posso converter um link físico para um arquivo normal? [duplicado]

2

Eu percebo que todo arquivo é um link rígido. Isto é o que quero dizer precisamente: se um inode tem mais de um arquivo apontando para ele, como posso copiar o inode para que cada arquivo esteja apontando para um inode separado com o mesmo conteúdo?

Por exemplo:

echo "Example" > one
ln one two

Como posso fazer com que o arquivo two tenha o mesmo conteúdo de one , sem compartilhar um inode? Eu gostaria de "reduplicar", se você quiser, os arquivos.

    
por Flimm 27.09.2016 / 12:16

1 resposta

2

Isso pode ser conseguido com o comando

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

ou se você agora o número de inode do arquivo

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

Observe que esses dois comandos localizam apenas os arquivos com inodes correspondentes nos subdiretórios do diretório de trabalho atual. Se você precisar pesquisar todos os arquivos em seu sistema de arquivos, será necessário executar esse comando a partir do diretório raiz.

A primeira parte find -samefile filename , encontra todos os arquivos que compartilham o mesmo inode. Em seguida, ele executa sed -i ';;' , que copia o arquivo para um arquivo com o mesmo nome (observe que usamos o script sed ';;' em vez de ';' , caso contrário, find interpretará o argumento ; como o final do comando -exec ).

    
por 27.09.2016 / 13:29

Tags