сохранение в / tmp на самом деле не сохранение?

10

Откройте, например, почтовое вложение из Firefox (без предварительного сохранения); это документ Libre Office, вы редактируете его, затем нажимаете сохранить (не сохранять как) и закрываете как текстовый редактор, так и браузер. Затем документ исчезает, так как он был сохранен по умолчанию в /tmp. По крайней мере, так обстоит дело с моей Ubuntu 12.04.

Как вы думаете, это правильное поведение? Разве программа не должна напоминать вам, что вы ничего не экономите? или есть какой-нибудь способ восстановить файл (также после выхода из системы и / или перезагрузки)?

jj_p
источник

Ответы:

10

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

Если вы затем сохраните файл (без выбора Save Asили эквивалентного) из программы, он будет использовать этот файл в /tmp.

Firefox очистит эти временные файлы, когда закроется. Таким образом, вы можете восстановить файл, если закроете LibreOffice, но не Firefox. Однако, как только Firefox будет закрыт, файл будет удален.

В большинстве (всех?) Дистрибутивов /tmpпапка также будет очищена при перезагрузке (файлы /var/tmpдолжны сохраняться дольше).

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

Обновить

Для справки (я не рекомендую делать это, если в этом нет необходимости), вы можете отключить удаление /tmpфайлов, когда Firefox закрывается, используя browser.helperApps.deleteTempFileOnExitопцию. Это может быть установлено через about:configстраницу (просто введите это в адресной строке и нажмите Enter). Если он существует и есть false, просто щелкните по нему правой кнопкой мыши и выберите переключатель. В противном случае добавьте его, выполнив Правый клик-> Новый-> Логический , затем введите имя параметра и выберите false.

Чтобы сохранить /tmpфайлы после следующей перезагрузки на последних системах, основанных на Debian, сначала посмотрите /etc/default/tmpfsи убедитесь, что нет RAMTMP=yesстроки. Если он закомментирован ( #в начале), это нормально (если он был установлен, он /tmpбудет находиться в tmpfsфайловой системе в памяти и не будет храниться на диске). Затем добавьте или измените TMPTIMEстроку в /etc/default/rcS. Для хранения /tmpфайлов на неопределенный срок вы можете сделать:

TMPTIME=infinite

Или вы можете использовать положительное число вместо того, infiniteчтобы хранить их в течение этого количества дней, когда их время истечет, они будут удалены при следующей перезагрузке. Очевидно, что если эта строка закомментирована, раскомментируйте ее.

Graeme
источник
Обратите внимание, что тот факт, что /tmpочищается при перезагрузке, связан с тем, что /tmpон монтируется как a tmpfs, который хранит свои файлы в ОЗУ (или подкачке), теряя свое содержимое после размонтирования.
Даркхогг
1
@ Дархогг, не тот случай. /tmpфайлы обычно специально очищаются. Я обновил информацию о том, как настройки для этого могут быть изменены в системах на основе Debian.
Грэм
Не знал об этом! +1 к этому комментарию.
Даркхогг
1
Когда файл открывается в Firefox через плагин, он может указать, каким образом он хочет доставить файл: на диск или непосредственно в память. Большинство плагинов выбирают память.
Марка
3

Firefox имеет кеш для «открытия» файлов. Этот кеш очищается каждый раз, когда вы закрываете Firefox. Если вы откроете этот файл с помощью LO и закроете Firefox, вы заметите, что файл исчезнет. Это верно для всех Firefox независимо от того, хранятся они /tmpили нет.

Braiam
источник
2

Как вы думаете, это правильное поведение?

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

Я думаю, что любой графический интерфейс пользователя, который позволяет пользователю делать что-то потенциально катастрофическое, не предупреждая их, является ошибочным, независимо от того, насколько «логичным» может быть решение, стоящее за ним. Это особенно верно, когда пользователи могут делать то же самое в похожих программах (например, в Chrome) без каких-либо негативных последствий.

Разве программа не должна напоминать вам, что вы ничего не экономите?

Хммм ... может быть было бы полезно всплывающее окно с флажком "Больше не показывать это сообщение". Еще более полезным было бы небольшое исправление в LibreOffice и аналогичных программах, предупреждающих пользователя, сохраняется ли сохраняемый файл в / tmp или где-либо еще. Я имею в виду, если вы нажмете «сохранить», вы ожидаете, что файл будет сохранен где-то, верно?

или есть какой-нибудь способ восстановить файл (также после выхода из системы и / или перезагрузки)?

Да, если тебе повезет. Я загрузил свой компьютер после установки USB Linux и сумел восстановить файл с помощью extundelete.

Matt_M
источник
2

Позволь мне объяснить. Когда вы выбираете «Открыть с помощью», а не «Загрузить в» в диалоговом окне, файл все равно загружается, и в этот момент Firefox открывает загруженный файл с приложением. Однако предполагается, что вы не хотите сохранять файл, поэтому этот файл удаляется при выходе из Firefox. Если вы хотели сохранить его, вам следует выбрать «Загрузить в», либо использовать «Сохранить как» в своем приложении, либо просто переместить файл из / var / tmp (где его хранит filefox); удаление применяется только к файлу в его исходном местоположении.

Обратите внимание, что файл удаляется, даже если другое приложение сохраняет его открытым (в техническом смысле). В Unix-подобных системах это не проблема: хотя запись каталога исчезает, сам файл остается и не будет удален, пока приложение не закроет его [сбой в этой точке может привести к тому, что диск будет в несовместимом состоянии; fsck сообщает об этой ситуации как "несвязанный индекс"]

Лиор Сильберман
источник
-1

Как вы думаете, это правильное поведение?

Конечно, это правильное поведение. Это происходит только тогда, когда вы не решили сохранить файл, а вместо этого решили открыть его. На мой взгляд, обычно лучше сохранить все, чем открывать.

Разве программа не должна напоминать вам, что вы ничего не экономите?

Почему? Если вы хотели сохранить, почему вы не решили скачать файл?

или есть какой-нибудь способ восстановить файл (также после выхода из системы и / или перезагрузки)?

Неа. Вам придется скопировать его, когда он все еще находится в tmp.

Павел Шимерда
источник