Изменение размера раздела fat32 в командной строке без потери данных

Я пытаюсь изменить размер толстого 32 раздела в моей машине Linux. Ниже приведены технические характеристики системы.

  1. Это не ПК, поэтому инструменты на основе пользовательского интерфейса не применимы.
  2. Этот раздел памяти, размер которого я пытаюсь изменить, уже содержит данные в виде файлов. Я не могу их потерять.
  3. Я пытаюсь сжать раздел на одно использованное пространство и перенести оставшееся пространство на другой раздел.
  4. Желательно без перезагрузки системы, размонтирование раздела будет в порядке.

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

То, что я пробовал до сих пор: пробовал с помощью инструмента parted, поскольку gparted нуждается в пользовательском интерфейсе. Хотя я могу уменьшить этот раздел, это приводит к ненужным проблемам из-за фрагментации файла. Например, после сжатия, когда я запускаю проверку файловой системы, я получаю ошибки, такие как цепочка, не найденная для нескольких файлов.

Я не могу использовать такие инструменты, как resizee2fs, так как он поддерживает только файловые системы ext (поправьте меня, если я ошибаюсь).

Я пытался использовать инструмент fatresize, хотя я смог успешно установить его в своем Debian, я не могу получить установочный файл для arm, какая бы ссылка я ни получала, она выдает ошибку в самой инструкции строки 1.

Может ли кто-нибудь помочь мне с любой информацией, которую они могут?

3 ответа

изменение размера части fat32

ПРИМЕЧАНИЕ: прежде всего, сделайте резервную копию ваших данных, на всякий случай.

тест изменения размера sda1 с 28G до 10GB.

0. исходный размер

      ubuntu$ sudo mount /dev/sda1  /media/chen/test

ubuntu$ lsblk /dev/sda
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    1 28.9G  0 disk 
└─sda1   8:1    1 28.9G  0 part /media/chen/test

1. изменить fs: fatresize

      ubuntu$ sudo fatresize /dev/sda1 -s 10G -i -p -v
fatresize 1.0.2 (06/16/18)
.Error: Partition /dev/sda1 is being used.  You must unmount it before you modify it with Parted.

ubuntu$ sudo umount /dev/sda1


ubuntu$ sudo fatresize /dev/sda1 -s 10240M -i -p -v
fatresize 1.0.2 (06/16/18)
.FAT: fat32
Size: 30985420800
Min size: 2483422208
Max size: 30989615104

ПРИМЕЧАНИЕ

// кажется, что gparted не меняет размер файловой системы, без этого шага файловая система будет сломана, говорит: файловая система больше объема:

      ubuntu$ sudo dosfsck /dev/sda1
fsck.fat 4.1 (2017-01-24)
Seek to 30985420288:Invalid argument

ubuntu$ sudo fatresize /dev/sda1 -s 9G -i -p -v
fatresize 1.0.2 (06/16/18)
.Error: The file system is bigger than its volume!

2. изменить раздел: gparted ИЛИ partx

изменить размер части sda1 в графическом интерфейсе gparted // partx cli также может это сделать.

      ubuntu$ lsblk /dev/sda
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    1 28.9G  0 disk 
└─sda1   8:1    1   10G  0 part 

ubuntu$ sudo blkid /dev/sda*
/dev/sda: PTUUID="d45b4904" PTTYPE="dos"
/dev/sda1: UUID="0403-0201" TYPE="vfat" PARTUUID="d45b4904-01"

3. проверить результат

      ubuntu$ sudo mount /dev/sda1  /media/chen/test

ubuntu$ df -h /media/chen/test
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        10G  2.4G  7.7G  24% /media/chen/test

ubuntu$ sudo dosfsck /dev/sda1
...

обновление1:

Кажется, gparted изменит размер толстой файловой системы на шаге 1.
// но если fs смонтирована, это может привести к сбою, но не к приостановке

вот нормальный журнал и результат:

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

Изменение размера и перемещение разделов не часто приводит к потере данных, и если ничего не помогает, вы почти всегда можете восстановить файлы с помощью photorec - http://www.cgsecurity.org/wiki/PhotoRec - это очень сложно.

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

Таким образом, несмотря ни на что, вы не можете переместить или изменить размер корневого раздела без загрузки с живого USB (исключение будет добавление в LVM).

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

См. Как изменить размер разделов с помощью командной строки без использования графического интерфейса на сервере?

В противном случае ваш вопрос может быть закрыт из-за:

  1. Вы используете Debian

  2. Недостаток информации. Вы не опубликовали свою схему разбиения, расскажите, что вы хотите переместить, какие разделы смонтированы и какие команды и сообщения об ошибках вы получаете.

Вам лучше скопировать данные в виде файлов в безопасное место (если хотите, назовите его резервным копированием), но в этом случае это также временное расположение, потому что я думаю, что вы должны согласиться с тем, что вы не можете сжать файловую систему FAT с помощью Linux. инструменты. Вы могли бы сделать это с помощью инструментов Windows (FAT32 - файловая система Microsoft.)

Поэтому после того, как вы скопировали данные в виде файлов в безопасное место, вы можете

  • загрузиться с другого диска и размонтировать все разделы на этом диске, которые вы хотите изменить

  • отредактируйте раздел (проще всего удалить раздел FAT32 и создать новый раздел с нужным вам размером.

  • создать файловую систему FAT32 в новом разделе

  • сделать другие модификации таблицы разделов...

  • скопируйте файлы из безопасного места в новый раздел FAT32.

Другие вопросы по тегам