On Fri, Jan 11, 2002 at 05:52:55PM -0800, Tim locke decreed: > I need to copy a whole subdirectory to another > subdirectory...possible? (i.e. cp /home/user1/file > /home/user2/file) as a regular user. ---end quoted text---
For the most accurate reproduction of a directory tree consider using the tar command: tar cf - . | (cd "$1"; tar xvf -) The command above assumes you want to copy from the working directory to another that replaces the $1 symbol. The advantage of tar is that it preserves permissions, links, etc. perfectly. cp does not make as perfect a copy. The attached script is a wrapper for the tar command above that will prompt to create the target directory, etc. Caveat - use at your own risk. But there's not much to it, and I use it all the time. Cheers, Steve -- \_O< \_O< \_O< ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Steve Cooper Redmond, WA
#!/bin/sh function yesno() { typeset yn echo -n "$1 (y/N)? " read yn typeset -i b if [ "$yn" = "y" -o "$yn" = "Y" -o "$yn" = "yes" ] then return 0 else return 1 fi } typeset -i nf if [ $# -ne 1 ] then echo "Usage: tarclone <destination directory>" exit 1 fi if [ ! -d "$1" ] then echo "Destination \"$1\" does not exist" if ( yesno "Create it" ) then mkdir "$1" else exit 2 fi fi nf=$('ls' "$1" | wc -l) if [ $nf -ne 0 ] then echo "Destination \"$1\" is not empty" if ( yesno "Copy anyway" ) then echo "Overwriting \"$1\"" else exit 3 fi fi echo -n "Ready to clone $(pwd) to $1 (y/N)? " read yn if [ "$yn" = "y" -o "$yn" = "Y" -o "$yn" = "yes" ] then tar cf - . | (cd "$1"; tar xvf -) fi