
Eu tenho um script que cria um diretório temporário usando mktemp -d
.
Uma pasta gerada no diretório temporário é a saída do script que será copiado para outra parte da máquina.
Eu estava pensando em ln
usar a mesma pasta em vez de copiar o conteúdo para outro lugar. Eu queria saber se ainda existiria se a versão da pasta no /tmp
diretório fosse limpa pelo sistema operacional.
Responder1
Depende de onde está o seu diretório temporário. Ou seja, você criou seu próprio diretório temporário ou está utilizando o ( /tmp
) do sistema?
No seu cenário, você espera que os arquivos/pastas permaneçam após a limpeza do diretório temporário.
Se estiver no /tmp
diretório do sistema, então pode muito bem ser limpo pelo sistema (é específico da distribuição, mas a maioria tem um cron
trabalho ou similar).
Além disso, algumas distros criam seu /tmp
diretório usando tmpfs
o que significa que o conteúdo mantido na RAM/Swap não sobrevive a uma reinicialização.
Os arquivos só permanecerão acessíveis se você criar umdurolink. No entanto, links físicos só podem ser criados em um único sistema de arquivos montado. Você não pode criar um link físico entre um sistema de arquivos tmpfs
/tmp
(por exemplo) ext4
montado em /mystuff
.
Você pode criar ummaciolink de /mystuff
para algum lugar montado tmpfs
em, /tmp
mas quando os arquivos temporários são excluídos, o link apontará para 'nowehere'; o que derrota ligeiramente o objeto!
Se sua distribuição tiver /tmp
arquivos em um disco físico que esteja na mesma montagem do local em que você planeja armazenar seus arquivos ( /mystuff
), um link físico funcionaria, desde que o link fosse criado antes da limpeza do sistema /tmp
.
Responder2
Dei um exemplo para tornar as coisas muito mais claras.
Dentro de um diretório específico, criei 2 arquivos.
cat sourcefile
This is the sourcefile.
##This is to create a hard link.
ln sourcefile destfile
##List the files available.
ls
destfile sourcefile
cat destfile
This is the sourcefile.
Agora, supondo que você uselinks físicoscomo acima, para se referir aos seus arquivos dentro /tmp
do diretório, vamos ver o que acontece se eu excluir o arquivo de origem.
rm sourcefile
rm: remove regular file `sourcefile'? y
ls
destfile
cat destfile
This is the sourcefile
No cenário acima, o destfile
ainda está acessível.
Agora, vamos ver o que acontece se usarmos softlinks.
cat sourcefile
This is the sourcefile for softlink example.
ln -s sourcefile destfile
ls -l
total 4
lrwxrwxrwx 1 root root 10 Jun 26 13:40 destfile -> sourcefile
-rw-r--r-- 1 root root 46 Jun 26 13:40 sourcefile
Agora, de acordo com o seu cenário, vamos excluir o arquivo de origem e ver o que acontece.
rm sourcefile
rm: remove regular file `sourcefile'? y
ls
destfile
cat destfile
cat: destfile: No such file or directory
Portanto, se você usar o soft link, os dados podem não estar lá.
EDITAR
Usei o mktemp
para criar um arquivo temporário e criei umlink físicodo /tmp
diretório para um dos meus diretórios de trabalho.
Reiniciei a máquina para verificar se o conteúdo também está disponível após a reinicialização. Se eu usarlinks físicos, o conteúdo também estará disponível após a reinicialização. A razão para verificar isso é durante a reinicialização, o /tmp
diretório normalmente é limpo.