( cd /source/dir/; tar c --files-from filelist -f - ) | ( cd /destination/dir/; tar xf - ) will be a lot more efficient than a series of Amazingly enough, that is just how Sebastian wrote the Unix install-live.sh :).