progress bar для консольных утилит

    По долгу службы мне время от времени приходится копировать, архивировать, разархивировать и проводить другие стандартные действия с большими файлами. Консольные утилиты, типа cp, tar или cat — отлично справляются с поставленной перед ними задачей, но возникает одна маленькая проблема: предположим, что надо заархивировать SQL-дамп на 500 Мб, на среднем железе данная операция может выполняться 5 — 10 минут и при этом, стандартный tar не выводит никакой строки прогресса, т.е. консоль как бы подвисает и только открыв top в соседнем окне можно понять что что-то происходит. Я думаю, что будет намного удобнее, если в консоли появится полоска прогресса как в том же scp и тогда пользователь будет лучше осведомлен о том, как долго ему осталось ждать до завершения операции.

    Спросив у Гугла я понял, что являюсь далеко не первым, кого обеспокоила эта проблема и хорошими людьми был написан интересный bash скрипт bar. Как он работает можно увидеть на картинке:



    Скрипт выполнен в лучших традициях unix-way: он отлично делает единственную поставленную перед ним задачу — рисует полосу прогресса, а так же может использоваться в цепочках команд.

    Скрипт работает в большинстве популярных систем, таких как Linux, Solaris, NetBSD, FreeBSD, OpenBSD и т.п. Скачать скрипт и узнать подробности его работы можно на странице проекта: http://www.theiling.de/projects/bar.html
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 16
    • +38
      man pv
    • НЛО прилетело и опубликовало эту надпись здесь
      • +2
        Спасибо за наводку на полезную и главное нужную вещь!
        Про pv тоже не знал. Спасибо, люди :)
        • 0
          про 5-10 минут на среднем железе вы хорошенько загнули.
          • 0
            значит либо у меня железо совсем плохое, либо что-то не так с файловой системой или что-то не так с дампом :( Но цифры реальные взял, не из головы.
          • +2
            А чём Вы сделали GIF?
            • 0
              если честно, то gif-ку я взял со странички проекта bar: www.theiling.de/projects/bar.html
              • +1
                Копи-пейстом с сайта автора bar-а.
                • +2
                  Отвечу сам на свой же вопрос. Есть много утилит, достаточно погуглить. Но именно для записи в GIF первой выдаётся byzanz
                • 0
                  Чаще бывает, что хочется посмотреть прогресс у уже запущенного процесса копирования. Естественно, ни о каком pv или bar никто заранее не подумал.
                  Вот давно интересно, а нельзя ли подглядеть состояние файлового дескриптора внутре процесса? Где-нибудь в /proc или даже пускай специальный ядерный модуль, даже под рутом, лишь бы было. Вот это было бы круто.
                • 0
                  Интересно. В винде есть возможность установить свой шелл экстеншн ICopyHook для пользовательских копирований (используется, например, в известной утилите KillCopy). А в линухе есть подобные интерфейсы, вроде бы там что-то делали на CORBA?
                  • 0
                    А можно ли прикрутить этот скрипт к Portage?

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.