summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2007-11-01 22:34:36 +0100
committerJim Meyering <meyering@redhat.com>2007-11-01 22:34:36 +0100
commitc70fc8d87b52e932013e992fb2700fedd53d2170 (patch)
tree322269268238085e21e577210c1aee009428b972 /doc
parente556eaa59edf8dfecc763fb13cf288fb1b4d3a40 (diff)
downloadcoreutils-c70fc8d87b52e932013e992fb2700fedd53d2170.tar.xz
Add example inspired by "make dist" running gzip and lzma in sequence.
* doc/coreutils.texi (tee invocation): Show how to run tar just once, compressing the tee'd output streams in parallel.
Diffstat (limited to 'doc')
-rw-r--r--doc/coreutils.texi26
1 files changed, 26 insertions, 0 deletions
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 9c960a57e..4c08378ce 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -11136,6 +11136,32 @@ right away and eliminate the decompression completely:
du -ak | tee >(gzip -9 > /tmp/du.gz) | xdiskusage -a
@end example
+Finally, if you regularly create more than one type of
+compressed tarball at once, for example when @code{make dist} creates
+both @command{gzip}-compressed and @command{bzip2}-compressed tarballs,
+there may be a better way.
+Typical @command{automake}-generated @file{Makefile} rules create
+the two compressed tar archives with commands in sequence, like this
+(slightly simplified):
+
+@example
+tardir=your-pkg-M.N
+tar chof - "$tardir" | gzip -9 -c > your-pkg-M.N.tar.gz
+tar chof - "$tardir" | bzip2 -9 -c > your-pkg-M.N.tar.bz2
+@end example
+
+However, if the hierarchy you are archiving and compressing is larger
+than a couple megabytes, and especially if you are using a multi-processor
+system with plenty of memory, then you can do much better by reading the
+directory contents only once and running the compression programs in parallel:
+
+@example
+tardir=your-pkg-M.N
+tar chof - "$tardir" \
+ | tee >(gzip -9 -c > your-pkg-M.N.tar.gz) \
+ | bzip2 -9 -c > your-pkg-M.N.tar.bz2
+@end example
+
@exitstatus