Ошибка “Файл слишком большой” при резервном копировании dd, несмотря на наличие достаточного свободного места на разделе FAT32

Вопрос или проблема

Ошибка “Файл слишком большой” при резервном копировании dd, несмотря на наличие достаточного свободного места на разделе FAT32

Я пытаюсь сделать резервную копию диска, но, увы, сталкиваюсь с следующей проблемой:

trisquel@trisquel:~$ sudo dd if=/dev/sda of=/media/trisquel/Backup/ImageBackupOfSeptember202024/full-backup.image status=progress
4261118464 bytes (4.3 GB, 4.0 GiB) copied, 77 s, 55.3 MB/s
dd: writing to '/media/trisquel/Backup/ImageBackupOfSeptember202024/full-backup.image': Файл слишком большой
8388608+0 записей в
8388607+1 записей out
4294967295 bytes (4.3 GB, 4.0 GiB) copied, 122.389 s, 35.1 MB/s
trisquel@trisquel:~$ cd /media/trisquel/Backup/ImageBackupOfSeptember202024/
trisquel@trisquel:/media/trisquel/Backup/ImageBackupOfSeptember202024$  df -Ph . | tail -1 | awk '{print $4}'
834G
trisquel@trisquel:/media/trisquel/Backup/ImageBackupOfSeptember202024$ 

Как указано, на диске есть 834 ГБ свободного места (значительно больше максимума в 500 ГБ для резервируемого диска), и он форматирован как FAT32.

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


ОС: Trisquel Live Installation Media (система live usb на базе Ubuntu)

Устройство: x230 ThinkPad

FAT 900GB Partition

Рисунок 1: Скриншот из Gnome Disk Utility

dd не удается завершить процесс, потому что ваша файловая система FAT не поддерживает большие файлы.

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

Альтернатива – записать несколько файлов.

Для этого вы можете использовать split:

sudo dd bs=1M if=/dev/sdx | split -b 1G - split-backup.

И это создаст файлы, такие как split-backup.aa, split-backup.ab и т. д., с объемом 1 ГиБ на файл (вы можете использовать 4 ГБ, если это поддерживает ваша файловая система).

Чтобы восстановить, вы можете использовать:

cat split-backup.* | sudo dd bs=1M of=/dev/sdx

cat конкатенирует разделенные данные обратно вместе.


Существует риск восстановления данных в неправильном порядке, если файлы были неправильно названы. Это в основном проблема, когда делится вручную или переименовываются файлы позже, поскольку split обычно сам заботится об этом. Когда он дойдет до .yz, он продолжит с .zaaa, чтобы остаться в алфавитном порядке.

Вы также можете использовать числовые суффиксы -d и установить фиксированную длину суффикса -a, так что, например, split -a 3 -d будет использовать 000, 001, 002 и т. д. в качестве суффикса.

Однако в этой конфигурации split прервется после 999 (split: исчерпаны суффиксы выходного файла). Поэтому используйте -a, только если вы на 100% уверены, сколько будет разделов, или используйте большие значения -a на всякий случай.

Ответ или решение

Проблема с ошибкой "File too large" при использовании команды dd связана с тем, что файловая система FAT32 не поддерживает файлы размером более 4 ГБ. Несмотря на наличие свободного места на разделе, FAT32 имеет ограничение по максимальному размеру файла, что и вызывает данную ошибку.

Вот несколько решений, которые вы можете рассмотреть:

  1. Изменение файловой системы: Лучше всего будет отформатировать ваш раздел с файловой системой, которая поддерживает большие файлы, например, ext4 или NTFS. Если вы можете переоформить ваш раздел, это будет наилучший способ.

    Важно: Перед форматированием сделайте резервные копии всех необходимых данных.

  2. Использование утилиты split для разбиения файла: Если вы не хотите или не можете изменить файловую систему, вы можете разбить создаваемый файл на более мелкие части, которые не превышают 4 ГБ. Это можно сделать следующим образом:

    sudo dd if=/dev/sda bs=1M | split -b 1G - split-backup-

    Эта команда создаст файлы с именами split-backup-aa, split-backup-ab, и так далее, каждый размером 1 ГБ. Вы можете изменить размер на 4G, если уверены, что ваша файловая система и место позволяют это.

    Для восстановления данных вы можете использовать следующую команду:

    cat split-backup-* | sudo dd of=/dev/sdx bs=1M

    Не забудьте заменить /dev/sdx на нужное устройство назначения.

  3. Использование утилиты tar с сжатием: Вы также можете использовать утилиту tar, чтобы создать архив, который будет разбит на небольшие части. Это можно сделать с помощью следующей команды:

    sudo tar -cvf - /dev/sda | split -b 4G - tar-backup-

    А для восстановления:

    cat tar-backup-* | sudo tar -xvf -

Каждый из этих методов позволит вам обойти ограничение файловой системы FAT32 и успешно создать резервную копию вашего устройства. Если же у вас есть возможность, я рекомендую сменить файловую систему на более современную и функциональную, такую как ext4, чтобы избежать подобных ограничений в будущем.

Оцените материал
Добавить комментарий

Капча загружается...