Os links para arquivos /tmp são excluídos?

Os links para arquivos /tmp são excluídos?

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 lnusar 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 /tmpdiretó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 /tmpdiretório do sistema, então pode muito bem ser limpo pelo sistema (é específico da distribuição, mas a maioria tem um crontrabalho ou similar).

Além disso, algumas distros criam seu /tmpdiretório usando tmpfso 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) ext4montado em /mystuff.

Você pode criar ummaciolink de /mystuffpara algum lugar montado tmpfsem, /tmpmas 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 /tmparquivos 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 /tmpdo 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 destfileainda 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 mktemppara criar um arquivo temporário e criei umlink físicodo /tmpdiretó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 /tmpdiretório normalmente é limpo.

informação relacionada