Удаляются ли ссылки на файлы /tmp?

Удаляются ли ссылки на файлы /tmp?

У меня есть скрипт, который создает временный каталог с помощью mktemp -d.

Папка, созданная во временном каталоге, представляет собой результат работы скрипта, который будет скопирован в другую часть машины.

Я думал использовать lnту же папку вместо копирования содержимого куда-то еще. Мне было интересно, останется ли она, если версия папки в каталоге /tmpбудет очищена ОС?

решение1

Это зависит от того, где находится ваш временный каталог. То есть, создали ли вы свой собственный временный каталог или используете системный ( /tmp)?

В вашем сценарии вы ожидаете, что файлы/папки останутся после очистки временного каталога.

Если он находится в системном /tmpкаталоге, то он вполне может быть очищен системой (это зависит от дистрибутива, но у большинства есть своя cronзадача или что-то подобное).

Кроме того, некоторые дистрибутивы создают свои /tmpкаталоги, используя tmpfs, что означает, что их содержимое хранится в оперативной памяти/разделе подкачки и не сохраняется после перезагрузки.

Файлы останутся доступными только в том случае, если вы создадитежесткийссылка. Однако жесткие ссылки могут быть созданы только в пределах одной смонтированной файловой системы. Вы не можете создать жесткую ссылку между a tmpfs /tmpи (например) ext4файловой системой, смонтированной на /mystuff.

Вы можете создатьмягкийссылка откуда /mystuff-то на tmpfsсмонтированный объект, /tmpно когда временные файлы будут удалены, ссылка будет указывать на «никуда»; что немного нарушает объект!

Если файлы вашего дистрибутива находятся /tmpна физическом диске, который смонтирован в том же месте, где вы планируете хранить файлы ( /mystuff), то жесткая ссылка будет работать, если она будет создана до очистки системы /tmp.

решение2

Я привел пример, чтобы все стало гораздо понятнее.

Внутри определенного каталога я создал 2 файла.

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. 

Теперь предположим, что вы используетежесткие ссылкикак указано выше, чтобы ссылаться на ваши файлы внутри /tmpкаталога, давайте посмотрим, что произойдет, если я удалю исходный файл.

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

В приведенном выше сценарии destfileвсе еще доступен.

Теперь давайте посмотрим, что произойдет, если мы воспользуемся программными ссылками.

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

Теперь, следуя вашему сценарию, давайте удалим исходный файл и посмотрим, что произойдет.

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

Поэтому, если вы используете мягкую ссылку, данных может не быть.

РЕДАКТИРОВАТЬ

Я использовал mktempдля создания временного файла и создалжесткая ссылкаиз /tmpкаталога в один из моих рабочих каталогов.

Я перезагрузил машину, чтобы проверить, доступно ли содержимое после перезагрузки. Если я используюжесткие ссылки, содержимое доступно и после перезагрузки. Причина проверки в том, что при перезагрузке каталог /tmpобычно очищается.

Связанный контент