<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Troll-Range &#187; Bash</title>
	<atom:link href="http://blog.trollgod.org.uk/category/development/bash/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.trollgod.org.uk</link>
	<description>Ghworg&#039;s wibblings and geek projects.</description>
	<lastBuildDate>Mon, 26 Apr 2010 19:31:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Copy progress</title>
		<link>http://blog.trollgod.org.uk/2005/10/copy-progress/</link>
		<comments>http://blog.trollgod.org.uk/2005/10/copy-progress/#comments</comments>
		<pubDate>Fri, 14 Oct 2005 23:48:45 +0000</pubDate>
		<dc:creator>Ghworg</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.trollgod.org.uk/?p=26</guid>
		<description><![CDATA[<p>I like progress displays on my file operations, in the gui this is no problem but on the command line most operations don&#8217;t give any useful progress info. So using a tool called pv I wrote a few little scripts to handle copying stuff with nice progress bars. This one uses tar to grab <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.trollgod.org.uk/2005/10/copy-progress/">Copy progress</a></span>]]></description>
			<content:encoded><![CDATA[<p>I like progress displays on my file operations, in the gui<br />
this is no problem but on the command line most operations don&#8217;t<br />
give any useful progress info. So using a tool called <a href=<br />
"http://www.ivarch.com/programs/pv.shtml">pv</a> I wrote a few<br />
little scripts to handle copying stuff with nice progress bars.<br />
This one uses tar to grab a bunch of files or an entire dirtree and<br />
replicate it elsewhere.
<div class="dean_ch" style="white-space: nowrap;"> <span class="re3">#!/bin/bash <span class="re2">ARGS=</span><span class="re4">$#</span> # Number of args</span><br />
passed. <span class="re2">DSTDIR=</span>$<span class="br0">&#123;</span>!ARGS<span class="br0">&#125;</span> <span class="re2">FILES=</span><span class="st0">&quot;&quot;</span> <span class="kw3">let</span> <span class="re2">SIZE=</span><span class="nu0">0</span> <span class="kw1">until</span> <span class="br0">&#91;</span> -z <span class="st0">&quot;$2&quot;</span> <span class="br0">&#93;</span> <span class="re3">#</span><br />
Until all parameters used up&#8230; <span class="kw1">do</span> <span class="re2">SRC=</span><span class="st0">&quot;$1&quot;</span> <span class="kw3">shift</span><br />
<span class="re2">SRCDIR=</span><span class="st0">&quot;${SRC%/*}&quot;</span> <span class="re2">FILES=</span><span class="st0">&quot;$FILES ${SRC##*/}&quot;</span> <span class="kw3">let</span> SIZE+=`<span class="kw2">du</span> -sb<br />
<span class="st0">&quot;$SRC&quot;</span> | <span class="kw2">awk</span> <span class="st0">&#8216;{print $1}&#8217;</span>` <span class="kw1">done</span> <span class="re3">#echo </span><span class="st0">&quot;Source dir = $SRCDIR&quot;</span> <span class="re3">#echo</span><br />
<span class="st0">&quot;Dest dir = $DSTDIR&quot;</span> <span class="kw3">echo</span> <span class="st0">&quot;Files = $FILES&quot;</span> <span class="re2">PRINTSIZE=</span><span class="st0">&quot;$SIZE&quot;</span> <span class="kw1">if</span> <span class="br0">&#91;</span><br />
<span class="re1">$SIZE</span> -gt <span class="nu0">1024</span> <span class="br0">&#93;</span>; <span class="kw1">then</span> <span class="re2">PRINTSIZE=</span>$<span class="br0">&#40;</span><span class="kw3">echo</span> <span class="st0">&quot;scale=3;<br />
$PRINTSIZE/1024.0&quot;</span> | <span class="kw2">bc</span><span class="br0">&#41;</span>; <span class="re2">UNITS=</span><span class="st0">&quot;K&quot;</span>; <span class="kw1">fi</span> <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re1">$SIZE</span> -gt <span class="nu0">1048576</span> <span class="br0">&#93;</span>;<br />
<span class="kw1">then</span> <span class="re2">PRINTSIZE=</span>$<span class="br0">&#40;</span><span class="kw3">echo</span> <span class="st0">&quot;scale=3; $PRINTSIZE/1024.0&quot;</span> | <span class="kw2">bc</span><span class="br0">&#41;</span>;<br />
<span class="re2">UNITS=</span><span class="st0">&quot;M&quot;</span>; <span class="kw1">fi</span> <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re1">$SIZE</span> -gt <span class="nu0">1073741824</span> <span class="br0">&#93;</span>; <span class="kw1">then</span> <span class="re2">PRINTSIZE=</span>$<span class="br0">&#40;</span><span class="kw3">echo</span><br />
<span class="st0">&quot;scale=3; $PRINTSIZE/1024.0&quot;</span> | <span class="kw2">bc</span><span class="br0">&#41;</span>; <span class="re2">UNITS=</span><span class="st0">&quot;G&quot;</span>; <span class="kw1">fi</span> <span class="kw3">printf</span> <span class="st0">&quot;%4.2f%s<br />
(%dbytes)<span class="es0">\n</span>&quot;</span> <span class="re1">$PRINTSIZE</span> <span class="re1">$UNITS</span> <span class="re1">$SIZE</span> <span class="br0">&#40;</span><span class="kw3">cd</span> <span class="re1">$SRCDIR</span>; <span class="kw2">tar</span> cf &#8211; <span class="re1">$FILES</span><span class="br0">&#41;</span><br />
| pv -s <span class="re1">$SIZE</span> | <span class="br0">&#40;</span><span class="kw3">cd</span> <span class="re1">$DSTDIR</span>; <span class="kw2">tar</span> xf -<span class="br0">&#41;</span></div>
<p> and this one just<br />
does a plain copy.
<div class="dean_ch" style="white-space: nowrap;"> <span class="re3">#!/bin/<span class="kw2">sh</span> <span class="re2">PIPECOPYCMD=</span>`<span class="kw2">which</span> pv` <span class="re2">ARGS=</span><span class="re4">$#</span></span><br />
<span class="re3"># Number of args passed. <span class="re2">DEST=</span>$<span class="br0">&#123;</span>!ARGS<span class="br0">&#125;</span> <span class="kw1">until</span> <span class="br0">&#91;</span> -z </span><span class="st0">&quot;$2&quot;</span> <span class="br0">&#93;</span> <span class="re3"># Until</span><br />
all parameters used up&#8230; <span class="kw1">do</span> <span class="re2">SRC=</span>$<span class="nu0">1</span> <span class="kw3">shift</span> <span class="re2">PATH=</span>$<span class="br0">&#123;</span>SRC%/*<span class="br0">&#125;</span><br />
<span class="re2">FILENAME=</span>$<span class="br0">&#123;</span>SRC<span class="re3">##*/<span class="br0">&#125;</span> <span class="kw1">if</span> <span class="br0">&#91;</span> -f </span><span class="st0">&quot;$SRC&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span> <span class="kw1">if</span> <span class="br0">&#91;</span> ! -e <span class="st0">&quot;$DEST&quot;</span> <span class="br0">&#93;</span>;<br />
<span class="kw1">then</span> <span class="re2">DESTFILENAME=</span><span class="st0">&quot;$DEST&quot;</span> <span class="kw1">elif</span> <span class="br0">&#91;</span> -d <span class="st0">&quot;$DEST&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
<span class="re2">DESTFILENAME=</span><span class="st0">&quot;$DEST/$FILENAME&quot;</span> <span class="kw1">else</span> <span class="kw3">echo</span> <span class="st0">&quot;Destination $DEST exists<br />
and is not a directory, aborting&quot;</span> <span class="kw3">exit</span> <span class="nu0">1</span> <span class="kw1">fi</span> <span class="re3">#echo </span><span class="st0">&quot;Copy $FILENAME<br />
to $DESTFILENAME&quot;</span> <span class="re1">$PIPECOPYCMD</span> &lt; <span class="st0">&quot;$SRC&quot;</span> &gt; <span class="st0">&quot;$DESTFILENAME&quot;</span><br />
<span class="kw1">else</span> <span class="kw3">echo</span> <span class="st0">&quot;Source $SRC doesn&#8217;t exist or is not a file&quot;</span> <span class="kw1">fi</span> <span class="kw1">done</span><br />
&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.trollgod.org.uk/2005/10/copy-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
