Свободное пространство: 0 байтов и файлы, полные данных, показанных как пустой

Просто записал этот маленький интерфейс в xwd, заставить его ожидать обеспеченное число секунд, прежде чем это возьмет дамп. Это, кажется, работает.

dumptime () {
  (sleep $1; xwd -root | convert - `date +%I.%M.%S`.png) &
}

Кроме того, существуют scrot и gnome-screenshot.

ImageMagick import решение в ответе г-на Mrozek имеет известную ошибку "черного квадрата" на -window root - не все получают его, но я делаю.

Согласно этому, gnome-screenshot основан на ImageMagick - но это не обертка; я просто просмотрел код, и это - приложение рака.

2
28.10.2013, 23:03
4 ответа

Для нахождения размера файлов, если у Вас есть повреждение раздела, это не собирается сообщать о корректном размере, пока фс не исследуется с fsck. Вы захотите выполнить a fsck -P на корневом диске можно определить этот диск путем выполнения df -h необходимо получить что-то вроде этого.

user@server:~> df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              25G   18G  5.9G  76% /
udev                  2.0G  116K  2.0G   1% /dev
/dev/sda1             244M   20M  211M   9% /boot
/dev/sda5             4.0G  1.7G  2.2G  43% /var
/dev/sda6             4.7G  1.2G  3.3G  27% /tmp
/dev/sdb1             197G  127G   61G  68% /data

Вы захотите загрузиться в режим восстановления от личинки или живой от (предпочтительного) диска. Продуктивная среда предпочтительна потому что, если у Вас есть повреждение файловой системы на /, fsck утилита могла быть повреждена и нанести ущерб. Если можно загрузиться в продуктивную среду / будет вряд ли смонтирован по умолчанию так df справка привычки, работая sudo fdisk -l перечислит доступный диск, когда-то определил, что можно работать fsck на намеченном устройстве.

Кроме того, Вы захотите скопировать от любых журналов, которые включились в архив. Принятие диска не является fubar, и можно освободить некоторое место, вывод относительно живого журнала прокрутки очень важен для диагностирования ошибок. Можно также рассмотреть использование чего-то как rsyslog для записи журналов базы данных по другому полю. Это предоставило бы Вам доступ к журналам, когда Вы диск получаете wonky.

2
27.01.2020, 22:06

Вы, вероятно, хотите выполнить fsck как можно скорее, как отмечено в другом ответе. Я попытался бы сделать резервное копирование сначала, особенно если Вы можете получить доступ к содержанию файлов несмотря на них перечисляемый с 0 размерами.

Посмотрите, фиксируют ли резервное копирование tar и восстановление к другой машине размер файла.

cd /to/problem/area
tar -zcf - . | ssh user@othermachine.com tar -C /some/safe/dir -zxvf -

Раз так - создают резервную копию всего затем перезагрузка в режим Recovery и fsck все.

1
27.01.2020, 22:06

Более года я веду битву с разделами и беспричинно гоняю на себя коррупцию. Даже с LiveCD я сталкивался с препятствиями, поскольку я изо всех сил пытался получить контроль и восстановить данные. Я был готов обратиться к инструментам восстановления, но нашел надежду, что gparted с gpart сможет справиться с тем, что мне действительно нужно, это просто передать мои данные в резервную копию, а затем

К сожалению, пока gparted правильно идентифицировал мои папки и файлы и определил структуру моего диска, он просто сообщил о несоответствиях в таблице разделов, но не исправил их. В разделе «Устройства» предлагалось выполнить спасение данных, но оказалось, что для этого нужно установить gpart. Его нет на LiveCD, и в ограниченном количестве репозиториев, разрешенных на LiveCD, его нет. Чтобы попасть куда угодно, вам нужно выполнить полную установку с обновлениями.

Но вы не устанавливаете дату установки на поврежденный диск без полной перестройки. Итак,

я выбрал / dev / sdb1 как root и убедился, что было выбрано что-то еще, кроме раздела подкачки на съемном диске. Программа установки предполагает, что можно использовать любые существующие разделы подкачки, но на поврежденном диске это опасное предположение. Установка прошла хорошо, но я отказался от своего старого дистрибутива и выбрал UbuntuGnome 16.04 вместо него. Я хотел выделить старый дистрибутив как причину своих проблем, но был почти уверен

Установка прошла гладко, но все было по-другому. Пару часов с ним собрали меня, он мне понравился гораздо больше, чем мой старый дистрибутив. Itg был немного сыроват и имел некоторые глючные детали, но в целом он был более чем приличным.Мне не нравилось, что в нем был только Firefox в качестве браузера, и на нем не было gpart, parted или других инструментов восстановления, но, глядя на нижнюю часть DVD-диска, он имел примерно в два раза больше связанного программного обеспечения, чем мой старый дистрибутив , так что это было хорошо.

Решив не возвращаться к своему старому дистрибутиву и посчитав неудобным работать с LiveCD, я решил выполнить вторую установку во второй новый раздел. в обеих установках у меня был процесс загрузки на / dev / sdb, а не на / dev / sda, который используется по умолчанию. / dev / sda был поврежден, поэтому запись в него не производится, пока я не скопирую свои учетные записи в / home. Иначе я могу случайно испортить его хуже. Каждый раз, когда вы выполняете новую установку или запускаете update0grup в терминале, текущая установка становится основной. Теперь я был готов загрузить съемный диск. Ранее я удалил все, кроме / home, на двух из трех разделов на / dev / sda. С LiveCD у вас должна быть возможность монтировать разделы, затем вы используете терминал и вводите следующие команды:

    sudo su root
    cd /m*/*/*/home

Первая команда дает вам идентификатор root и постоянное питание, пока вы находитесь в этом сеансе терминала, без тайм-аутов. Но при этом остаются $ HOME и $ USER. Однако "~" заменяется на / root. Вы можете выйти из корневого каталога, набрав «exit» или выполнив «su» для другого идентификатора.

Вторую команду, возможно, придется изменить. Это позволяет смонтировать раздел либо в / mnt, либо в / media, либо в любую другую папку, начинающуюся с «m». Обычно это единственные два в системе Linux. Но даже без «m» команда будет успешной только в том случае, если есть «домашняя» папка на двух уровнях.Если это не диск с «домом», выберите имя папки на разделе, чтобы помочь. Если вы не знаете, что находится в разделе, вы можете использовать эту последовательность команд, чтобы получить большую часть пути к нему:

   cd /m*/$USER; dir *; dir */

Скорее всего, это приведет к прокрутке вне поля зрения. Для прокрутки вверх или вниз удерживайте клавиши Ctrl + Shift и используйте клавиши со стрелками вверх и вниз. Определите раздел, к которому вы хотите перейти, и сделайте следующее: «cd». Опять же, вам нужно ввести только часть того, что есть, используя *, чтобы заполнить остальное.

Поскольку мы здесь, чтобы сохранить учетные записи пользователей и устранить все остальное, я предполагаю, что вы использовали «дом», теперь он находится в правом разделе. Фактически, вы сейчас находитесь в ... / доме. Итак, все, что мы хотим удалить, - это один слой назад. Мы идентифицируем текущий уровень только с точкой (.) И один уровень назад с двумя точками (..). Теперь «home» - единственная папка на этом уровне, которая начинается с «h», и это упрощает нашу работу:

    rm -r ../[!h]*

Эта команда рекурсивно удаляет все, что не начинается с «h», на один уровень назад. Это включает в себя файлы и папки, а с -r это означает, что находится в этих папках, независимо от того, есть ли в их именах буква «h» или нет. Вот и все. Теперь вы хотите попытаться получить данные, если это возможно. Но для этого мне нужен gpart, а это означало загрузку одного из двух недавно установленных разделов. Итак, я набрал «перезагрузить сейчас» и выполнил процесс перезапуска.

Это произошло, как и планировалось, но после установки некоторого необходимого и желаемого программного обеспечения через окно терминала с помощью apt-get и некоторых других команд я решил пойти дальше и изменить / etc / sudoers с помощью этой команды:

    sudo echo $USER '    ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers

См. на самом деле нет необходимости редактировать файл, если вы просто собираетесь что-то добавить к нему. Это поможет. Теперь, когда я использую «sudo», меня не спрашивают пароль.

Сделав это, я подумал, как мне получить данные. Был gpart,который сделал хорошую работу, сделав 2 из моих 3 разделов снова доступными для чтения, когда он был вызван gparted. С аргументом -w он может запросить то, что он прочитал, в другое место, но он, вероятно, перезапишет то, что уже было там. rsync допускает синхронизацию с включениями и исключениями там, где вы храните новейшие, но то же самое делает "cp -purf" без преимуществ включения и исключения. Но было не так много исключений, о которых можно было бы беспокоиться, кроме мусора. И был ddrescue, и я даже не изучил содержимое нескольких ISO-образов аварийного диска, которые я скачал. В любом случае я не был заинтересован в спасении поврежденного диска, я просто получил данные, если это возможно, и начал все сначала.

Затем при моей новой установке возникли проблемы с разделами. Теперь я точно знал, что это произошло по одной из двух причин: либо ext4 waa bad, либо swap. Это были единственные два типа разделов, которые я использовал в течение долгого-долгого времени. Все остальное изменилось, но это были две константы, я не знал, что делать со свопом, но он существует уже давно, и его роль достаточно проста, поэтому это был маловероятный кандидат. Скорее всего, это был ext4, и я мог его изменить.

Я начал со съемного диска с LiveCD и gparted. О решил, что могу отказаться от версии и попробовать ext3. Пробираясь обратно, он разбомбил хуже, чем ext4. fsck сообщил мне, что ext4 обрабатывает ext3 и обнаруживает невероятное количество ошибок на только что отформатированном диске на новом диске, который был признан чистым.Получается, нет отдельного ext? форматировать больше, и единственный способ получить старую копию ext4 - это использовать старый LiveCD. Вам придется вернуться на год или больше, и это может помочь при установке, но первое обновление заменит его версией, которая окажется дефектной.

Открывал ли я отчет об ошибке? Нет, и я не собираюсь этого делать. Во-первых, это мой личный опыт, я не могу говорить ни за кого другого. То, что это произошло на 4 ПК и шести жестких дисках, могло быть просто совпадением или отражать плохое сочетание программного обеспечения. верно? Это требует подтверждения, поэтому, если вам тоже не повезло, и вы используете ext4, об этом, возможно, стоит поговорить.

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

Тем не менее, мне нужно было выбрать другую структуру для своих разделов, но какую? Я искал в Интернете, но это небольшая тема, и каждый оставляет ее на усмотрение. Затем я рассмотрел варианты gparted и установщика, когда вы используете «Что-то еще». Они не согласны. Есть, конечно, матчи, но их не так много. Вы сразу теряете варианты ext2, ext3, и ext4, но вам также нужно исключить FAT16, FAT32 и NTFS.Я не буду объяснять почему, просто не выбирайте их, если вам это действительно не нужно для совместимости с Windows или DOS. Что ж, я объясню вкратце: FAT16 bis слишком ограничен, лучше всего подходит для дискет, FAT32 слаб, а NTFS ошибочна и не имеет хорошего инструмента восстановления ни на стороне Windows, ни на Linux.

Вместо того, чтобы снова делать ставку на один тип раздела, я решаю использовать как минимум два. Перекрытие между gparted и установщиком было 3m, и я выбрал jfs и xfs. Я сделал их оба, по одному на раздел, и пока никаких проблем.

Что касается восстановления данных, 3-й раздел полностью пропал. Запись в таблице разделов для свопа, 4-го раздела, подскочила с примерно 6 ГБ до примерно 58 ГБ, отображая значительную часть 3-го раздела. В любом случае это было в значительной степени избыточным, так как я хранил там вещи, но у меня не было реального времени, чтобы его использовать.

Я решил просто использовать "cp -purf. Если бы папки и файлы были неповрежденными, я бы достал их достаточно легко. Но они мне все равно не нужны. Я бы восстановил / dev / sda1 / * в / dev / sdb1 / и / dev / sda2 / * tp dev / sdb2 /. Я сделал еще один шаг: я установил / dev / sda1 и / dev / sda2 как только для чтения. Я не собирался рисковать операцией записи идет плохо. Звучит совершенно маловероятно, но в последние месяцы у меня было много плохих вещей, и становилось все хуже. Могу я освободиться от этого сейчас.

О, команды, которые использовались на самом деле:

    dir /mnt
    sudo -i
    mkdir /mnt/sda1
    mkdir /mnt/sda2
    mkdir /mnt/sda3
    sudo mount -o ro /dev/sda1 /mnt/sda1
    sudo mount -o ro /dev/sda2 /mnt/sda2
    sudo mount -o ro /dev/sda3 /mnt/sda3
    dir /mnt/sda1
    home  hope
    dir /mnt/sda2
    hold  home
    dir /mnt/sda3
    lost+found
    dir /mnt/sda3/lost+found
    mkdir /mnt/hold1
    cp -rfup /mnt/sda1/home/* /media/$USER/sdb1/home/; cp -rfup /mnt/sda2/hold/* /media/$USER/sda1/home/; cp -rfup /mnt/sda2/home/* /media/$USER/sdb2/home/; cp -rfup /mnt/sda2/hope/* /media/$USER/sda2/home/

] Используя эту технику, я объединил 2 папки на / dev / sda1 в одну папку на / dev / sdb1 и проделал то же самое с двумя другими разделами. Теперь я начну с / dev / sda и заставлю gparted работать. опять таки.Гораздо быстрее и тщательнее, чем пытаться восстановить поврежденный диск, что в лучшем случае является неопределенным предложением.

0
27.01.2020, 22:06

Вот мое предположение о том, что произошло.

  1. Ваш файл .xsession-errors был заполнен 650+MB мусора.
  2. Это заполнило ваш домашний раздел.
  3. Множество программ, которые все еще запущены, продолжают работать и пытаются записывать файлы на домашнем разделе.

Ниже описаны некоторые проблемы с ним.

Реальное дисковое пространство

Чтобы проверить использование диска на вашей машине, используйте команду df. Вот пример:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        10G  4.5G  4.5G  50% /
/dev/sda5        25G 22.5G    0G 100% /home

Это должно показать свободное место на вашем диске.

Вы можете заметить что-то странное в приведенном примере. В /dev/sda1 указанный размер раздела составляет 10 Гб. Однако, если сложить столбцы Used и Avail, то получится только 9G. То же самое с /dev/sda5 - столбцы Used и Avail на пару гигов меньше размера файловой системы. Что происходит?

По умолчанию разделы ext создаются с зарезервированным пространством, некоторым небольшим процентом файловой системы, который недоступен обычным пользователям, но доступен пользователю root. В приведенном выше примере зарезервированное пространство для /dev/sda1 и /dev/sda5 составляет 10%. Вы можете просмотреть зарезервированное пространство в /dev/sda1 с помощью tune2fs -l /dev/sda1.

Что происходит, когда программа пишет на диск

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

Но как выглядит ситуация, когда программа не может писать в файловую систему? Чтобы объяснить это, вы должны вспомнить, что программы записывают в файловую систему в 2 этапа:

  1. программа получает от операционной системы ДЕКРИПТОР ФАЙЛА (с правами на запись).
  2. программа посылает данные в ОПИСАТЕЛЬ ФАЙЛА. Затем операционная система может поставить эти данные в очередь на запись.

Интересно, что это соответствует представлению ядра о файлах, которое делает различие между следующим:

  1. блок на диске, который описывает размер файла, разрешения и т.д. - он же inode
  2. блоки на диске, которые хранят содержимое файла - они же блоки данных

inodes малы по сравнению с блоками, которые хранят данные. Большинство файловых систем различают пространство, занимаемое блоками данных, и пространство, занимаемое инодами, поэтому, когда мы делаем df -h, мы сообщаем только о пространстве для блоков данных. Что касается свободного пространства, то inodes не учитываются.

Как это связано с вашей ситуацией?

Если диск заполнен, то есть действительно заполнен на 100%, без свободного места, это не означает, что ваша система больше не может записывать на диск. Программы все еще могут получать ОПИСАНИЯ ФАЙЛОВ, создавая таким образом пустые файлы 0-го размера. Однако они не смогут записывать данные в эти файлы. Многие программы выдадут сообщение об ошибке или завершат работу, если не смогут записать данные в файл из-за проблем с дисковым пространством. Но в конце концов на диске останется файл размером 0.

Пример неудачной записи

В качестве примера приведем bash.

  1. bash запускается и считывает переменную HISTFILE, которая говорит ему открыть .bash_history для истории команд
  2. согласно переменной HISTSIZE, bash позволит только 1000 строк истории (или то, что установлено в вашей)
  3. вы выполняете несколько команд, затем выходите.
  4. bash теперь пытается записать последние 1000 команд в вашей истории в .bash_history
    1. bash получает ОПИСАНИЕ ФАЙЛА для .bash_history
    2. Linux теперь создает файл 0 размера .bash_history file
    3. bash отправляет 1000 строк данных в ФАЙЛ ОПИСАНИЯ истории
    4. Linux выдает ошибку записи из-за нехватки места на диске
  5. У вас остался файл .bash_history размером 0

Этот процесс легко повторяется для любых программ, которые пытаются записать целый файл, в отличие от простого добавления в конец файла. Поэтому я не ожидаю, что лог-файлы будут обнулены, хотя я не ожидаю, что они будут обновляться.

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

Но подождите, ваша система ведь не упала?

Я очень подозреваю, что ваш системный раздел (/) отделен от вашего домашнего раздела (/home), что вы должны увидеть, если запустите df. Более того, даже если это не так, ваши системные программы, запущенные от имени пользователя root, должны иметь доступ к зарезервированному пространству в ваших разделах, которое должно составлять что-то около 1-10% от общего размера разделов.

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

0
27.01.2020, 22:06

Теги

Похожие вопросы