Resumidamente, hard links são utilizados quando desejamos dar mais de um nome a um arquivo, dentro de um mesmo filesystem (condição obrigatória). Assim, um arquivo terá mais de um nome e os seus dados só serão excluídos quando todos os nomes também o forem. Como exemplo, observe um arquivo em um diretório:
$ ls -lh total 4,0K -rw-r--r-- 1 eriberto eriberto 1,5K Mar 6 21:33 teste
Agora, criaremos um hard link para ele com o nome abacaxi:
$ ln teste abacaxi
Veja o resultado:
$ ls -lh total 8,0K -rw-r--r-- 2 eriberto eriberto 1,5K Mar 6 21:33 abacaxi -rw-r--r-- 2 eriberto eriberto 1,5K Mar 6 21:33 teste
Ainda, com a opção -i, podemos ver que os dois arquivos pertencem ao mesmo inode:
$ ls -lhi total 8,0K 919611 -rw-r--r-- 2 eriberto eriberto 1,5K Mar 6 21:33 abacaxi 919611 -rw-r--r-- 2 eriberto eriberto 1,5K Mar 6 21:33 teste
Em outras palavras, são nomes diferentes para o mesmo arquivo. Se apagarmos o arquivo original (o teste), o segundo permanecerá presente e conterá todos os dados. Observe:
$ rm teste $ ls -lh total 4,0K -rw-r--r-- 1 eriberto eriberto 1,5K Mar 6 21:33 abacaxi
Bem, essa teoria nos levará ao resultado pretendido. Muitas vezes, os vídeos da Internet são baixados localmente no diretório /tmp e, depois de exibidos, são apagados. Isso ocorre, por exemplo, com os vídeos do Youtube, Terra TV e UOL quando exibidos no Firefox, por exemplo. Então, vamos a um exemplo de preservação de vídeo do Youtube. Siga o seguinte roteiro:
- Acesse um vídeo do Youtube.
- Enquanto o mesmo carrega, vá ao diretório /tmp e execute o comando $ ls -lt duas ou três vezes. Você verá que um dos arquivos (geralmente o primeiro) estará crescendo de tamanho constantemente. Então, por dedução, esse é o vídeo que está sendo exibido no navegador. Exemplo de nome: FlashXXiF80uV.
- Crie um hard link, com o comando ln, como mostrado anteriormente, dando um segundo nome ao arquivo. Exemplo: $ ln FlashXXiF80uV acidente_aereo.flv.
Seguindo esses passos, o arquivo acidente_aereo.flv será mantido depois que o arquivo FlashXXiF80uV for apagado. Com isso, você acaba de preservar uma cópia perfeita do vídeo exibido.
Divirta-se!
Uma outra técnica para obter esses arquivos é usar a aba net da extensão Firebug do Firefox/Iceweasel.
Para manter no /temp faz sentido, porém se for para armazenar em outro diretório (home>usuario) faz mais sentido (do ponto de vista do usuário) simplesmente copiar o arquivo não?
Ou o principio usado tem como objetivo diminuir o I/O dos discos? (podendo criar um hard link para o diretório de destino é claro).
Olá Wallacy,
Observe no artigo: “Muitas vezes, os vídeos da Internet são baixados localmente no diretório /tmp e, depois de exibidos, são apagados”. Então, o objetivo de usar hard links é manter uma cópia integral do arquivo depois que o original for apagado.
[]s
Meu slack 13.1 parou de armazenar os videos em buffer no diretório /tmp. Alguém já viu isso? Tem como consertar?
Olá Eriberto,
fiz os testes com o Debian squeeze e Ubuntu 10.10, e percebi que o buffer dos arquivos não são mais exibidos em /tmp, e vasculhei mas não achei nada, porém no Ubuntu 10.04 ainda é feito da forma como você descreveu…
Olá!
Isto implica em duplicar a área ocupada para o armazenamento, ou ele faz apenas um link para a mesma área física ocupada no HD?
Grato.
Hardlink é apenas um outro nome para a mesma área física. Enquanto existir um dos nomes, o arquivo não é apagado.
[]s
No meu Ubuntu 10.04 os videos armazenavam normalmente no /temp, até o momento em que instalei um plugin pra baixar pelo firefox e a partir disso não funcionou mais.
para aplicar isso ao Mac fiz o o seguinte.
echo “$TMPDIR”
$ ln FlashXXxxxx meuvideo.flv.