В настоящее время я пишу расширенный стартовый скрипт для моего сервера Minecraft. Все работает так, как я этого хочу. Но проблема в резервных копиях. Я создал функцию для этого. Он также прекрасно работает и делает именно то, что я хочу. Но так как сервер должен быть выключен во время резервного копирования, а само резервное копирование занимает годы (я имею в виду часы), мне нужно ускорить резервное копирование!
Моя текущая резервная копия работает так:
tar -cjvf $BACKUP_PATH/$filename $MINECRAFT_PATH
Как я уже сказал, это занимает много времени!
Поэтому у меня возникла идея просто создать tar-файл без сжатия, затем запустить сервер и затем сжать архив.
tar -cvf $BACKUP_PATH/$filename $MINECRAFT_PATH
START_SERVER
bzip2 -9 $BACKUP_PATH/$filename
rm $BACKUP_PATH/$filename
Это должно работать быстрее. Но тогда у меня появилась идея. И это тот момент, когда ты мне нужен.
Сначала я хотел изменить фактическое резервное копирование таким образом, чтобы оно показывало, сколько резервных копий уже было создано, и оценило, сколько приблизительно времени потребуется для его завершения. Таким образом, вывод команды tar будет подавлен, команда будет выполняться в фоновом режиме, и цикл (while) (ожидающий завершения команды) вычислит рассчитанный процент и также рассчитает оценку оставшегося времени.
Для этого я сначала позвоню du
чтобы узнать размер всех сжатых файлов. Это будет сохранено в переменной. Я бы получил текущую метку времени. Также сохраняется в переменной. В этот момент цикл начнется. Затем в цикле будет вычисляться процент и оставшееся время (просто ...), и это будет напечатано в двух строках, которые всегда обновляются. И это моя главная проблема. Я был бы очень рад, если бы кто-то мог помочь мне с петлей!
Некоторый основной код:
tar -cf $BACKUP_PATH/$filename $MINECRAFT_PATH &
backupsize=$(du -bs $MINECRAFT_PATH)
starttimestamp=$(date +%s)
# Here is the loop (how do I stay here while the tar command is still running?
# And how do i update the two lines with the newly created numbers?
START_SERVER
bzip2 -9 $BACKUP_PATH/$filename
rm $BACKUP_PATH/$filename
Если у вас хорошее настроение, вы можете помочь мне заставить такого рода вещи работать и в команде bzip
. Если это невозможно, я просто оставлю это! (bzip
принимает те же флаги, что и zip
)