«Файл слишком велик» при копировании файла размером 8 ГБ на устройство Apple с объемом 30 ГБ (неподписанная USB-накопитель)

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

У меня есть этот файл на диске:

$ ls -lh /path/to/some.mkv
-rwxr-xr-x 1 enrico enrico 7.4G Dec 17 18:54 /path/to/some.mkv

так что он меньше 8 гигабайт, но когда я пытаюсь скопировать его на 30GiB флешку, я получаю эту ошибку:

cp: error writing '/path/to/some.mkv': File too large

Вот диск:

$ sudo fdisk -l | tail -n 16

Disk /dev/sdc: 29.3 GiB, 31457280000 bytes, 61440000 sectors
Disk model: USB DISK        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6f20736b

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sdc1        778135908 1919645538 1141509631 544.3G 72 unknown
/dev/sdc2        168689522 2104717761 1936028240 923.2G 65 Novell Netware 386
/dev/sdc3       1869881465 3805909656 1936028192 923.2G 79 unknown
/dev/sdc4       2885681152 2885736650      55499  27.1M  d unknown

Partition table entries are not in disk order.
$ sudo mount /dev/sdc /mnt/foo
$ cd /mnt/foo
$ df . -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc         30G   16K   30G   1% /mnt/foo

Мой ответ здесь исходит из предположения, что на монтированном вами разделе используется файловая система fat32. В этом случае максимальный размер файла составляет 4 ГБ (то есть ни один файл не может быть больше 4 ГБ).

https://en.wikipedia.org/wiki/File_Allocation_Table (См. Fat32)

Если действительно смонтирована /dev/sdc2 и, основываясь на вашем выводе fdisk, это файловая система NetWare, она также имеет максимальный размер файла 4 ГБ.

https://en.wikipedia.org/wiki/NetWare_File_System

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


Сегодня мне понадобилось восстановить часть моей старой аудиоколлекции,.. нет, я не сделал резервную копию моих MP3. Итак, я вспомнил, что у меня был старый Apple iPod (4GB). Я подключил его к USB, и вуаля, я увидел что-то очень похожее и особенно странное в разделе, который опубликовал автор вопроса:

# fdisk -l /dev/sdb

Disk /dev/sdb: 3,78 GiB, 4055885824 bytes, 1980413 sectors
Disk model: iPod
Units: sectors of 1 * 2048 = 2048 bytes
Sector size (logical/physical): 2048 bytes / 2048 bytes
I/O size (minimum/optimal): 2048 bytes / 2048 bytes
Disklabel type: dos
Disk identifier: 0x6f20736b

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sdb1        778135908 1919645538 1141509631   2,1T 72 unknown
/dev/sdb2        168689522 2104717761 1936028240   3,6T 65 Novell Netware 386
/dev/sdb3       1869881465 3805909656 1936028192   3,6T 79 unknown
/dev/sdb4       2885681152 2885736650      55499 108,4M  d unknown

Partition table entries are not in disk order.

Вы видите сходство?!


Теперь, как он монтируется:

# mount -v | grep -i sdb

/dev/sdb on /media/vlastimil/18ED-9712 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

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

Один пример, где это действительно может все испортить, это fdisk, и я имею в виду, что вы действительно должны прочитать предупреждение:

# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.39.3).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

The device contains 'vfat' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.

Command (m for help): p

Disk /dev/sdb: 3,78 GiB, 4055885824 bytes, 1980413 sectors
Disk model: iPod            
Units: sectors of 1 * 2048 = 2048 bytes
Sector size (logical/physical): 2048 bytes / 2048 bytes
I/O size (minimum/optimal): 2048 bytes / 2048 bytes
Disklabel type: dos
Disk identifier: 0x6f20736b

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sdb1        778135908 1919645538 1141509631   2,1T 72 unknown
/dev/sdb2        168689522 2104717761 1936028240   3,6T 65 Novell Netware 386
/dev/sdb3       1869881465 3805909656 1936028192   3,6T 79 unknown
/dev/sdb4       2885681152 2885736650      55499 108,4M  d unknown

Partition table entries are not in disk order.

Command (m for help): q

Позвольте мне подчеркнуть это:

The device contains 'vfat' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.

Убедитесь, что вы не нажали w там! 🙂


Когда не смонтировано, запуск fsck не опасен:

# fsck -fvy /dev/sdb

fsck from util-linux 2.39.3
fsck.fat 4.2 (2021-01-31)
Checking we can access the last sector of the filesystem
There are differences between boot sector and its backup.
This is mostly harmless. Differences: (offset:original/backup)
  65:01/00
  Not automatically fixing this.
Boot sector contents:
System ID "MSDOS5.0"
Media byte 0xf8 (hard disk)
      2048 bytes per logical sector
      4096 bytes per cluster
       236 reserved sectors
First FAT starts at byte 483328 (sector 236)
         2 FATs, 32 bit entries
   3952640 bytes per FAT (= 1930 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 8388608 (sector 4096)
    988158 data clusters (4047495168 bytes)
63 sectors/track, 255 heads
         0 hidden sectors
   1980413 sectors total
Volume label 'UªIVATEL -' находится в корневом каталоге и недействителен.
  Автоматически удаляю метку.
Reclaiming unconnected clusters.
Dirty bit is set. Файловая система не была корректно размонтирована и некоторые данные могут быть повреждены.
 Автоматически удаляю dirty bit.
Checking free cluster summary.

*** Файловая система была изменена ***
Записываю изменения.
/dev/sdb: 122 файла, 44508/988158 кластеров

Я также проверил системный журнал, прикладываю для полноты:

[Sun Jan  5 20:19:47 2025] usb 1-2: новое высокоскоростное USB устройство номер 10 с использованием xhci_hcd
[Sun Jan  5 20:19:47 2025] usb 1-2: Найдено новое USB устройство, idVendor=05ac, idProduct=1302, bcdDevice= 0.01
[Sun Jan  5 20:19:47 2025] usb 1-2: Строки нового USB устройства: Mfr=1, Product=2, SerialNumber=3
[Sun Jan  5 20:19:47 2025] usb 1-2: Продукт: iPod
[Sun Jan  5 20:19:47 2025] usb 1-2: Изготовитель: Apple Inc.
[Sun Jan  5 20:19:47 2025] usb 1-2: Серийный номер: <- SN удален ->
[Sun Jan  5 20:19:47 2025] usb-storage 1-2:1.0: Обнаружено устройство USB Mass Storage
[Sun Jan  5 20:19:47 2025] scsi host2: usb-storage 1-2:1.0
[Sun Jan  5 20:19:47 2025] usbcore: зарегистрирован новый интерфейсный драйвер usb-storage
[Sun Jan  5 20:19:47 2025] usbcore: зарегистрирован новый интерфейсный драйвер uas
[Sun Jan  5 20:19:47 2025] usbcore: зарегистрирован новый драйвер устройства apple-mfi-fastcharge
[Sun Jan  5 20:19:48 2025] scsi 2:0:0:0: Direct-Access     Apple    iPod             2.70 PQ: 0 ANSI: 2
[Sun Jan  5 20:19:48 2025] sd 2:0:0:0: Attached scsi generic sg1 type 0
[Sun Jan  5 20:19:48 2025] sd 2:0:0:0: [sdb] 1980413 логических блоков по 2048 байт: (4.06 GB/3.78 GiB)
[Sun Jan  5 20:19:48 2025] sd 2:0:0:0: [sdb] Защита записи отключена
[Sun Jan  5 20:19:48 2025] sd 2:0:0:0: [sdb] Sense Mode: 6e 00 00 08
[Sun Jan  5 20:19:48 2025] sd 2:0:0:0: [sdb] Неполные параметры режима
[Sun Jan  5 20:19:48 2025] sd 2:0:0:0: [sdb] Предполагается кэш диска: запись через
[Sun Jan  5 20:19:48 2025]  sdb:
[Sun Jan  5 20:19:48 2025] sd 2:0:0:0: [sdb] Подключен съемный SCSI диск
[Sun Jan  5 20:19:48 2025] FAT-fs (sdb): Том не был корректно размонтирован. Некоторые данные могут быть повреждены. Пожалуйста, выполните fsck.

Мой iPod поддерживает только FAT32 согласно следующему файлу:

/media/vlastimil/18ED-9712/iPod_Control/Device/SysInfoExtended

где выдержка указывает файловую систему:

<key>VolumeFormat</key><string>FAT32</string>

FAT32 на Википедии гласит, как уже было сказано, я цитирую:

Максимально возможный размер файла на томе FAT32 – 4 ГБ минус 1 байт, или, более точно, 232 − 1 байт.

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

Когда вы сталкиваетесь с ошибкой "File too large" при попытке копирования файла размером 8 ГБ на флеш-накопитель Apple объемом 30 ГБ, проблема чаще всего связана с файловой системой устройства. Давайте подробно рассмотрим эту ситуацию и ее решение.

Фоновая информация

Ситуация: У вас есть файл /path/to/some.mkv размером 7.4 ГБ. Вы пытаетесь скопировать его на флешку объемом 30 ГБ, но получаете ошибку: cp: error writing '/path/to/some.mkv': File too large.

Анализ: Судя по информации о флешке, ее файловая система, вероятно, является FAT32. Эта файловая система имеет ограничение на максимальный размер одного файла — 4 ГБ. Это и является причиной получения ошибки "File too large". Независимо от общего доступного объема на устройстве, FAT32 не может обрабатывать файлы размером более 4 ГБ.

Решение проблемы

  1. Изменение файловой системы:
    Чтобы скопировать большие файлы, вам необходимо переформатировать флешку с использованием другой файловой системы, которая поддерживает более крупные файлы. Рассмотрим два варианта:

    • exFAT: Поддерживает файлы большого размера и является отличным вариантом для флеш-накопителей, особенно для обмена между различными операционными системами (Windows, macOS, Linux).
    • NTFS: Также поддерживает файлы большого размера, но поддержка может быть ограничена на macOS без дополнительных драйверов.

    Для форматирования флеш-накопителя в Linux, используйте команду mkfs:

    sudo mkfs.exfat /dev/sdc

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

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

Вывод

Проблема копирования файлов на флеш-накопитель связана с ограничением файловой системы FAT32. Для успешно переноса больших файлов размером более 4 ГБ, рассмотрите возможность смены файловой системы на exFAT или NTFS, или используйте архивирование и разделение файла на части. Это позволит избежать ошибок и эффективно использовать доступное дисковое пространство.

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

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

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