
Откройте, например, вложение в почту из Firefox (предварительно не сохраняя его); это документ Libre Office, вы его редактируете, а затем нажимаете сохранить (не сохранить как) и закрываете и текстовый редактор, и браузер. Затем документ исчезает, так как он был сохранен по умолчанию в /tmp
. По крайней мере, так происходит в моем Ubuntu 12.04.
Как вы думаете, это правильное поведение? Разве программа не должна хотя бы напомнить вам, что вы на самом деле ничего не сохраняете? Или есть какой-то способ восстановить файл (также после выхода из системы и/или перезагрузки)?
решение1
Экспериментируя с этим, я обнаружил, что когда вы выбираете открытие документа с помощью внешней программы в 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
чтобы хранить их в течение этого количества дней, как только их время истечет, они будут удалены при следующей перезагрузке. Очевидно, если эта строка закомментирована, раскомментируйте ее.
решение2
Firefox имеет кэш для "открытия" файлов. Этот кэш очищается каждый раз, когда вы закрываете Firefox. Если вы откроете этот файл с помощью LO и закроете Firefox, вы заметите, что файл исчезнет. Это справедливо для всех Firefox, независимо от того, хранятся они в них /tmp
или нет.
решение3
Как вы думаете, это правильное поведение?
Должен сказать, что я так не думаю. Но я немного предвзят, поскольку из-за этой странности чуть не потерял шесть часов работы.
Я думаю, что любой GUI, который позволяет пользователю делать что-то потенциально катастрофическое без предупреждения, является дефектным, независимо от того, насколько «логичным» может быть решение по дизайну, стоящее за этим. Это особенно верно, когда пользователи могут делать то же самое в похожих программах (например, Chrome) без каких-либо негативных последствий.
Разве программа не должна хотя бы напомнить вам, что на самом деле вы ничего не сохраняете?
Хм... может быть, всплывающее окно с флажком "Больше не показывать это сообщение" было бы полезным. Еще более полезным было бы небольшое исправление для LibreOffice и подобных программ, предупреждающее пользователя, если сохраняемый файл сохраняется в /tmp или где-то еще. Я имею в виду, если вы нажимаете "сохранить", вы ожидаете, что файл будет где-то сохранен, верно?
или есть ли способ восстановить файл (даже после выхода из системы и/или перезагрузки)?
Да, если повезет. Я загрузил свой компьютер с установленного на USB-накопителе Linux и мне удалось восстановить файл с помощью extundelete.
решение4
Как вы думаете, это правильное поведение?
Конечно, это правильное поведение. Это происходит только тогда, когда вы не выбиралисохранятьфайл, но вместо этого решилоткрытьэто. По-моему, обычно лучше все сохранить, чем открывать.
Разве программа не должна хотя бы напомнить вам, что на самом деле вы ничего не сохраняете?
Почему? Если вы хотели сохранить, почему вы не выбрали загрузку файла?
или есть ли способ восстановить файл (даже после выхода из системы и/или перезагрузки)?
Нет. Вам придется скопировать его, пока он еще находится в tmp.