Sei que todo arquivo é um link físico. Isso é exatamente o que quero dizer: se um inode tiver mais de um arquivo apontando para ele, como posso copiar o inode para que cada arquivo aponte 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 one
, sem compartilhar um inode? Gostaria de "reduplicar", se quiser, os arquivos.
Responder1
Isso pode ser conseguido com o comando
find -samefile filename -exec sed -i ';;' {} \;
ou se você agora o número do inode do arquivo
find -inum inode -exec sed -i ';;' {} \;
Observe que ambos os comandos encontram apenas os arquivos com inodes correspondentes nos subdiretórios do diretório de trabalho atual. Se precisar pesquisar todos os arquivos em seu sistema de arquivos, você precisará executar este comando no diretório raiz.
A primeira parte find -samefile filename
encontra todos os arquivos que compartilham o mesmo inode. Em seguida, ele executa sed -i ';;'
o 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 -exec
comando).