cp and mv with progress bar

Jun 28, 2007 23:45

Давно хотелось иметь progress bar для cp и mv. Как оказалось, не я один такой.
Среди различных предложений по решению этой проблемы, был найден наиболее оптимальный , но заброшенный.
После общения с google нарисовалась следующая картина:
Попытка автора обратиться к разработчикам с целью включения патча в coreutils была отклонена . Винить их не в чем (да и не нам), более того, я считаю, что они правы. Приблизительно то же самое сделали Debian-овцы (и надо думать разработчики других дистрибутивов), их понять тоже немудрено, ибо конфликт с upstream-ом в таком пакете как coreutils это уже не баловство.
Самыми смелыми оказались Gentoo-шники, собственно без них ничего бы и не было. Они этот патч подобрали, поддерживают, и корректируют с релизами coretils во избежание конфликтов.
Взяв последний стабильный релиз coreutils-6.9 и этот патч, подкорректировав время начала отображения progress bar с 5-ти секунд задержки до 2-х, собрал это в Debian пакеты для lennyныне testing etch ныне stable (последний, как оказалось работает и в lenny), следующего содержания:

$ dpkg-deb --contents patched-coreutils-6.9-i386_sarge_etch.deb
drwxr-xr-x wing/wing 0 2007-06-28 22:32 ./
drwxr-xr-x wing/wing 0 2007-06-28 22:31 ./usr/
drwxr-xr-x wing/wing 0 2007-06-28 22:33 ./usr/local/
drwxr-xr-x wing/wing 0 2007-06-28 22:33 ./usr/local/bin/
-rwxr-xr-x wing/wing 424824 2007-06-28 22:31 ./usr/local/bin/cp
-rwxr-xr-x wing/wing 474700 2007-06-28 22:31 ./usr/local/bin/mv

оригинальные /bin/cp и /bin/mv никто не трогает, разумеется. Также не трогаются man страницы, поэтому опцию "-g" вы там не увидете (но увидите в cp --help).
Все, что осталось - добавить в ~/.bashrc строки:
alias cp='cp -g'
alias mv='mv -g'
Собственно, результат:


Разумеется, не идеально. Miika Pekkarinen, написавший этот самый патч, тоже не отчаивался, написал утилиту pb с подобным функционалом и добавил в cp и mv интересную реакцию на SIGUSR1, подобную dd, когда она показывает на чем прервалась операция. Почитать тут .
Возможно, в будущем я стану умным и попробую что-нибудь из этого развить.. А пока, надеюсь, оказался кому-то полезным. Кому нужны бинарники для других дистрибутивов - или выдирайте из deb-ов сами, или пишите, сделаем. Или здесь же пропатченные исходники :-)

packages:
http://krylwosky.bravehost.com/patched-coreutils-6.9-i386_lenny.deb
http://krylwosky.bravehost.com/patched-coreutils-6.9-i386_sarge_etch.deb
sources:
http://krylwosky.bravehost.com/coreutils-6.9-patched.tar.gz

unix

Previous post Next post
Up