Вопрос или проблема
У меня есть этот файл на диске:
$ 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 ГБ.
Это служит дополнением к принятому ответу, а также возможным источником важных фактов, о которых не упомянул автор вопроса. Обычно этого не должно происходить. Вы не должны намеренно редактировать / скрывать / вручную изменять любые выводы команд, такие как ваш 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 ГБ.
Решение проблемы
-
Изменение файловой системы:
Чтобы скопировать большие файлы, вам необходимо переформатировать флешку с использованием другой файловой системы, которая поддерживает более крупные файлы. Рассмотрим два варианта:- exFAT: Поддерживает файлы большого размера и является отличным вариантом для флеш-накопителей, особенно для обмена между различными операционными системами (Windows, macOS, Linux).
- NTFS: Также поддерживает файлы большого размера, но поддержка может быть ограничена на macOS без дополнительных драйверов.
Для форматирования флеш-накопителя в Linux, используйте команду
mkfs
:sudo mkfs.exfat /dev/sdc
Перед этим убедитесь, что вы сохранили всю важную информацию с флешки, так как форматирование удаляет все данные.
-
Использование архивов и разделение файлов:
Если смена файловой системы нежелательна или невозможна, вы можете разделить файл на несколько частей размером меньше 4 ГБ с помощью утилит, таких какsplit
, или создать архивы.zip
с каждой частью размером меньше указанного лимита.
Вывод
Проблема копирования файлов на флеш-накопитель связана с ограничением файловой системы FAT32. Для успешно переноса больших файлов размером более 4 ГБ, рассмотрите возможность смены файловой системы на exFAT или NTFS, или используйте архивирование и разделение файла на части. Это позволит избежать ошибок и эффективно использовать доступное дисковое пространство.
Эти советы помогут убедиться, что ваш опыт работы с данными на флеш-накопителях не будет омрачен ограничениями файловой системы. Внедряйте оптимальные решения в управление вашими файлами, чтобы повысить продуктивность и избежать потери данных.