3

У меня есть сценарий, который периодически выполняет резервное копирование каталога с помощью команды tar -czvf [name] [directory] ", но моя проблема в том, что в последнее время сценарий сильно нагружает сервер (Minecraft SMP) и имеет тенденцию отставать игроков, поскольку это резервное копирование, которое недавно заняло почти 5 минут.

Поэтому мне нужно знать, есть ли способ контролировать степень сжатия GZip одновременно с тем, что он архивирует и создает резервные копии файлов?

Я понимаю, что я могу сначала распаковать файлы, а затем GZip отдельно с другой степенью сжатия, но это не сработает, потому что это именует файлы с текущим временем сервера, которое иногда меняется между командами.

Любое понимание? Спасибо заранее

3 ответа3

2

Выполнение этого в два этапа, вероятно, более переносимо. Если вам нужна временная метка, сначала сохраните ее:

filename=/what/ever/backup-$(date +%Y%m%d%H%M%S).tar
tar cvf $filename ...
gzip -1 $filename

Я также предлагаю вам посмотреть в nice и ionice. Они могут помочь вам уменьшить влияние резервного копирования на скорость отклика сервера.

1

Может быть, немного поздно, но это может помочь другим ...

Если вы регулярно выполняете резервное копирование аналогичных данных, вам следует сначала создать только копию (не сжимать ее, а просто создать файл tar), а затем сжать вместе больше резервных копий. В случае сервера Minecraft вы, вероятно, делаете несколько резервных копий каждый день. Вы можете запланировать сжатие этих резервных копий вместе с сильным алгоритмом, как каждый день или около того, запускать его, когда на сервере не так уж много людей. Задержка будет длиннее, но дело в том, что результирующий архив будет очень маленьким (потому что большинство мировых файлов вообще не меняются между резервными копиями). И если у вас есть запас энергии на некоторых ядрах (что вполне вероятно), сжатие будет использовать это (и приведет к меньшему отставанию от остальной части сервера), что может увеличить производительность во время резервного копирования.

0

Я часто делаю что-то подобное, поэтому, когда процесс tar завершен, мне не нужно вспоминать gzip, поскольку все это делается в одной строке:

tar cvf - $nameOfDirOrFileToBeBackedUp | gzip -$compressionLevel > $backupLocation/$nameOfDirOrFileToBeBackedUp.tar.gz

Этот метод работает на старых версиях tar, которые не поддерживают gzip (Solaris 10 все еще не поддерживает).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .