Sparse files (разряженные файлы): различия между версиями
Перейти к навигации
Перейти к поиску
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 19: | Строка 19: | ||
# утилита копирования cp | # утилита копирования cp | ||
# --sparse=auto (по умолчанию в RHEL10, в других дистрибутивах не проверялось) если источник является sparse, то файл назначения тоже будет sparse | # --sparse=auto (по умолчанию в RHEL10, в других дистрибутивах не проверялось) если источник является sparse, то файл назначения тоже будет sparse | ||
+ | # в этом режиме эффективность sparse может значительно снизиться и файл будет занимать значительно больше места чем исходный | ||
# --sparse=never файл назначения будет не sparse | # --sparse=never файл назначения будет не sparse | ||
# --sparse=always файл назначения будет sparse | # --sparse=always файл назначения будет sparse |
Версия 14:12, 5 октября 2025
Ссылки по теме
- Разрежённый файл
- Sparse file
- Разреженные файлы в NTFS
- DAR - архиватор для больших файлов, поддерживает sparse, дифференциальный бэкап на уровне изменяемых блоков.
Если файл содержит большие фрагменты заполненные нулями, то они могут быть вырезаны и место занимаемое файлом частично освободится, при этом логический размер не изменится.
Как найти sparse файлы
find /mnt/data/KVM-Store/ -type f -printf "%S %s %p\n" | awk '$1 < 1 { print $0 }'
Как работать с sparse файлами
# вырезание пустот (преобразование обычного файла в sparse файл), при этом изменяется дата модификации файла fallocate -d </path/to/file> # утилита копирования cp # --sparse=auto (по умолчанию в RHEL10, в других дистрибутивах не проверялось) если источник является sparse, то файл назначения тоже будет sparse # в этом режиме эффективность sparse может значительно снизиться и файл будет занимать значительно больше места чем исходный # --sparse=never файл назначения будет не sparse # --sparse=always файл назначения будет sparse # пример конвертации в sparse cp --sparse=always /path/to/file1 /path/to/file2 # rsync имеет опцию --sparse, но она полноценно не работает # при локальном копировании с диска на диск в папке назначения файлы могут занимать в 1.5-2 раза больше места на диске, хотя будут частично разряженными # опции --inplace и --whole-file не решают проблему # при копировании через сеть опция --sparse может совсем не работать (не проверял) # также есть мнение, что при копировании через сеть могут передаваться пустые участки, что значительно увеличивает трафик и время копирования (не проверял) # к сожалению dar исключен из репозитория RHEL10 # актуальная версия tar поддерживает sparse # пример архивации с конвертацией в sparse tar --sparse -cJvf /path/to/file.tar.xz /path/to/file.dat # если файл архива был создан с конвертацией в sparse, то при распаковке он будет восстановлен как sparse не зависимо от наличия опции --sparse tar -xJvf /path/to/file.tar.xz # (нужно проверить) возможно так все восстанавливаемые файлы будут конвертироваться в sparse # даже если они не были sparse и архивировались без опции --sparse tar --sparse -xJvf /path/to/file.tar.xz # утилита du (disk usage) du /path/to/file # объем занимаемый на диске, в том числе с учетом sparse du --apparent-size /path/to/file # логический размер файла, то что отображает ls -l --block-size=K # утилита ls ls -ls /path/to/file # отдельно в первом столбце отображает размер занимаемый на диске в блоках, в том числе с учетом sparse