Werden Links zu /tmp-Dateien gelöscht?

Werden Links zu /tmp-Dateien gelöscht?

Ich habe ein Skript, das mit ein temporäres Verzeichnis erstellt mktemp -d.

Ein im temporären Verzeichnis generierter Ordner ist die Ausgabe des Skripts, die in einen anderen Teil des Computers kopiert wird.

Ich habe überlegt, lndenselben Ordner zu verwenden, anstatt den Inhalt woanders hin zu kopieren. Ich habe mich gefragt, ob er noch vorhanden wäre, wenn die Version des Ordners im /tmpVerzeichnis vom Betriebssystem bereinigt würde?

Antwort1

Dies hängt davon ab, wo sich Ihr temporäres Verzeichnis befindet. Das heißt, haben Sie Ihr eigenes temporäres Verzeichnis erstellt oder verwenden Sie das ( /tmp) des Systems?

In Ihrem Szenario erwarten Sie, dass die Dateien/Ordner nach der Bereinigung des temporären Verzeichnisses erhalten bleiben.

Wenn es sich im /tmpVerzeichnis des Systems befindet, wird es möglicherweise vom System bereinigt (es ist distributionsspezifisch, aber die meisten haben einen cronJob oder ähnliches).

Darüber hinaus erstellen einige Distributionen ihr /tmpVerzeichnis mit , tmpfswas bedeutet, dass der Inhalt im RAM/Swap gespeichert wird und einen Neustart nicht übersteht.

Die Dateien bleiben nur dann zugänglich, wenn Sie einehartLink. Allerdings können Hardlinks nur innerhalb eines einzelnen gemounteten Dateisystems erstellt werden. Sie können keinen Hardlink zwischen einem tmpfs /tmpzu einem (z. B.) ext4auf gemounteten Dateisystem erstellen /mystuff.

Sie können einweichLink von /mystuffzu einem Ort auf einem tmpfsgemounteten Server, /tmpaber wenn die temporären Dateien gelöscht werden, zeigt der Link auf „nirgendwohin“, was den Zweck ein wenig verfehlt!

Wenn die Dateien Ihrer Distribution auf einer physischen Festplatte gespeichert sind /tmp, die sich auf demselben Mount befindet wie der Speicherort, an dem Sie Ihre Dateien speichern möchten ( /mystuff), funktioniert ein Hardlink, solange der Link vor der Bereinigung des Systems erstellt wird /tmp.

Antwort2

Ich habe ein Beispiel gemacht, um die Dinge klarer zu machen.

In einem bestimmten Verzeichnis habe ich zwei Dateien erstellt.

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. 

Angenommen, Sie verwendenHardlinkswie oben, um auf Ihre Dateien im /tmpVerzeichnis zu verweisen. Mal sehen, was passiert, wenn ich die Quelldatei lösche.

rm sourcefile
rm: remove regular file `sourcefile'? y
ls
destfile
cat destfile
This is the sourcefile

Im obigen Szenario destfileist weiterhin zugänglich.

Sehen wir uns nun an, was passiert, wenn wir Softlinks verwenden.

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

Lassen Sie uns nun gemäß Ihrem Szenario die Quelldatei löschen und sehen, was passiert.

rm sourcefile
rm: remove regular file `sourcefile'? y
ls
destfile
cat destfile
cat: destfile: No such file or directory

Wenn Sie also einen Softlink verwenden, sind die Daten möglicherweise nicht vorhanden.

BEARBEITEN

Ich habe die mktempzum Erstellen einer temporären Datei verwendet und eineFester Linkvom /tmpVerzeichnis zu einem meiner Arbeitsverzeichnisse.

Ich habe den Rechner neu gestartet, um zu prüfen, ob die Inhalte auch nach dem Neustart verfügbar sind. Wenn ichHardlinks, der Inhalt ist auch nach dem Neustart verfügbar. Der Grund für diese Überprüfung ist, dass das /tmpVerzeichnis beim Neustart normalerweise gelöscht wird.

verwandte Informationen