Вопрос или проблема
Ошибка “Файл слишком большой” при резервном копировании 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
Рисунок 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 имеет ограничение по максимальному размеру файла, что и вызывает данную ошибку.
Вот несколько решений, которые вы можете рассмотреть:
-
Изменение файловой системы: Лучше всего будет отформатировать ваш раздел с файловой системой, которая поддерживает большие файлы, например, ext4 или NTFS. Если вы можете переоформить ваш раздел, это будет наилучший способ.
Важно: Перед форматированием сделайте резервные копии всех необходимых данных.
-
Использование утилиты
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
на нужное устройство назначения. -
Использование утилиты
tar
с сжатием: Вы также можете использовать утилитуtar
, чтобы создать архив, который будет разбит на небольшие части. Это можно сделать с помощью следующей команды:sudo tar -cvf - /dev/sda | split -b 4G - tar-backup-
А для восстановления:
cat tar-backup-* | sudo tar -xvf -
Каждый из этих методов позволит вам обойти ограничение файловой системы FAT32 и успешно создать резервную копию вашего устройства. Если же у вас есть возможность, я рекомендую сменить файловую систему на более современную и функциональную, такую как ext4, чтобы избежать подобных ограничений в будущем.