Почему я не могу создавать разреженные файлы в разделе NTFS под Linux?
У меня есть очень большой разреженный файл в разделе EXT4, и я хочу скопировать этот файл в раздел NTFS. Размер файла составляет около 2 ТБ, но, поскольку это разреженный файл, он занимает на диске только 700 ГБ.
Раздел NTFS, в который я хочу скопировать этот файл, имеет всего около 1,3 ТБ свободного места. Так что, если я смогу скопировать туда разреженный файл, он вполне поместится; но как неразреженный файл он не подойдет.
Я попытался скопировать файл простым
Проверив размер файла и его использование на диске, я вижу, что файл в разделе NTFS не разрежен.
Я также попытался создать разреженный файл вручную с помощью любой из этих команд:
-
dd if=/dev/zero of=test1.bin bs=1 count=1 seek=100000
-
truncate -s 100000 test2.bin
В разделе EXT4 оба созданных файла были редкими (показывает, что они используют 0 байт на диске). Но в разделе NTFS каждый файл фактически использует 100 КБ дискового пространства, согласно даннымls -lsk
.
Итак: почему я не могу создавать разреженные файлы в разделе NTFS? И что я могу сделать, чтобы скопировать большой файл как разреженный в раздел NTFS?
Система, в которой это происходит:
- Debian 11 (Яблочко) x86-64
- пакет ядра 5.10.92-1
- пакет ntfs-3g 1:2017.3.23AR.3-4+deb11u1
В соответствии с
/dev/sdg1 on /mnt/loop2 type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
Насколько я понимаю, раздел монтируется с помощью драйвера ntfs-3g - это правильно? И согласно
Я не создавал раздел NTFS самостоятельно, а использовал существующий раздел, который был на диске при его покупке.
1 ответ
Обычно в Windows невозможно скопировать или создать разреженный файл, если его номинальный размер превышает объем доступного свободного места. Кроме того, файлы Windows, возможно, потребуется пометить как разреженные с помощью команды fsutil sparse , иначе они не будут разреженными.
Я предлагаю выполнить копирование изнутри Windows, возможно, используя такую утилиту, как sparse.zip , которую можно найти в конце статьи «Разреженные файлы NTFS для программистов ».
Синтаксис этой команды прост:
cs.exe from-path to-path
Если это невозможно сделать в Windows, поскольку файл есть только в Linux, попробуйтеtar
файл в Linux, а затем разархивируйте его в целевой системе Windows с помощью подсистемы Windows для Linux (WSL).