В настоящее время я работаю tar czf
над объединением файлов резервных копий. Файлы находятся в определенном каталоге.
Но количество файлов растет. Использование tzr czf
занимает слишком много времени (более 20 минут и считая).
Мне нужно объединить файлы быстрее и масштабируемым образом.
Я нашел genisoimage
, readom
и mkisofs
. Но я не знаю, что является самым быстрым и каковы ограничения для каждого из них.
tar
приводит к значительным накладным расходам, чтение файлов является дорогостоящей операцией. Вам следует либо изменить способ хранения ваших файлов, либо использовать совершенно другой подход (скопировать файловую систему в целом). Мы не можем вам сильно помочь, не зная, как организованы ваши файлы.Ответы:
Вы должны проверить, что большая часть вашего времени тратится на процессор или ввод / вывод. В любом случае, есть способы улучшить это:
A: не сжимать
Вы не упомянули «сжатие» в списке требований попробуйте отправить на «Z» из списка аргументов:
tar cf
. Это может немного ускорить процесс.Существуют и другие методы для ускорения процесса, например, использование «-N» для пропуска файлов, которые вы уже создали ранее.
B: резервное копирование всего раздела с помощью dd
В качестве альтернативы, если вы создаете резервную копию всего раздела, вместо этого возьмите копию всего образа диска. Это сэкономило бы обработку и много времени поиска диска.
tar
и у любой другой программы, работающей на более высоком уровне, есть потребность в чтении и обработке записей каталога и inode, чтобы найти, где находится содержимое файла, и для выполнения дополнительных операций поиска на диске , считывая каждый файл из другого места с диска.Чтобы выполнить резервное копирование базовых данных намного быстрее, используйте:
dd bs=16M if=/dev/sda1 of=/another/filesystem
(Предполагается, что вы не используете RAID, что может немного изменить ситуацию)
источник
pigz
если в системе существует более одного процессора.Повторим то, что сказали другие: нам нужно больше знать о файлах, для которых выполняется резервное копирование. Я пойду с некоторыми предположениями здесь.
Добавить в файл tar
Если файлы только добавляются в каталоги (то есть, файл не удаляется), убедитесь, что вы добавляете к существующему файлу tar, а не заново создаете его каждый раз. Вы можете сделать это, указав существующее имя файла архива в вашей
tar
команде вместо нового (или удалив старое).Записать на другой диск
Чтение с того же диска, на который вы пишете, может снизить производительность. Попробуйте записать на другой диск, чтобы распределить нагрузку ввода-вывода. Если файл архива должен находиться на том же диске, что и исходные файлы, переместите его позже.
Не сжимать
Просто повторяю то, что сказал @ Yves. Если ваши файлы резервных копий уже сжаты, нет необходимости снова сжимать. Вы просто будете тратить циклы процессора.
источник
Использование tar с lz4 crompression, как в
дает вам лучшее из обоих миров (довольно хорошее сжатие и скорость). Ожидайте степень сжатия около 3, даже если ваши данные содержат двоичные файлы.
Дальнейшее чтение: сравнение алгоритмов сжатия Как использовать tar с lz4
источник
Я удивлен, что никто не упоминает сброс и восстановление. Это будет намного быстрее, чем dd, если у вас есть свободное место в файловой системе.
Обратите внимание, что в зависимости от рассматриваемой файловой системы вам могут понадобиться разные инструменты:
Обратите внимание, что некоторые программы не имеют встроенного сжатия (все, кроме дампа) - направляют в стандартный вывод и используют pigz по мере необходимости. ;-)
источник