с использованием cpu.cfs_quota_us и cpu.cfs_period_us для ограничения использования ЦП

Несжатый tar-архив из одного файла состоит заголовка, файла и завершающей панели. Итак, ваша основная проблема заключается в том, как добавить 512 байт заголовка в начало вашего файла. Вы можете начать с создания желаемого результата, используя только заголовок:

tar cf - bigfile | dd count=1 >bigarchive.tar

Затем скопируйте первые 10 ГБ вашего файла. Мы просто предполагаем, что ваш dd может читать / записывать 1 ГБ за раз:

dd count=10 bs=1G if=bigfile >>bigarchive.tar

Теперь мы освобождаем скопированные данные из исходного файла:

fallocate --punch-hole -o 0 -l 10GiB bigfile

Это заменяет данные разреженными нулями, которые не занимают места на файловую систему. Продолжайте таким же образом, добавляя skip = 10 к следующему dd , а затем увеличивая начальное смещение fallocate до -o 10 ГБ . В самом конце добавьте несколько символов null, чтобы дополнить окончательный tar-файл.


Если ваша файловая система не поддерживает fallocate , вы можете сделать что-то подобное, но начиная с конца файла. Сначала скопируйте последние 10 Гбайт файла в промежуточный файл с именем, скажем, part8 . Затем используйте команду truncate , чтобы уменьшить размер исходного файла. Действуйте аналогично, пока у вас не будет 8 файлов по 10 Гбайт каждый. Затем вы можете объединить заголовок и часть1 в bigarchive.tar , затем удалите part1 , а затем объедините part2 и удалите его, и так далее.

2
22.03.2016, 16:29
0 ответов

Теги

Похожие вопросы