On Sat, 29 Jan 2011 15:27:59 +0100 Alex Schuster <wo...@wonkology.org>
wrote:

> > > I just wrote a little script that does this, but it does not do the
> > > sparse file thing yet, and would have problems with newline in file
> > > names. And I guess someone already wrote such a utility?
> > 
> > IIUC, try
> > 
> > find / -type d -exec sh 'mkdir -p target"$1"' - {} \;
> 
> Hmm, that does not really seem to work. It tries to execute the whole
> stuff between single quotes as a command. And I don't really understand
> what it is supposed to do, shouldn't this be something like mkdir -p 
> /destination/$1/\{\} ?

No. That recreates the full directory hierarchy based at / under /target/,
with no files in it. Just the directory hierarchy. I should have added
that, to do it safely, the target should reside higher than the source in
the hierarchy, or it should be on a different filesystem and in that case
-xdev should be specified to find (otherwise an recursive loop would
result). 

A more sensible approach would probably be

cd /source && find . -type d -exec bash 'mkdir -p "${@/#//target/}"' - {} +

with -xdev if needed. But as I see now, this is not what you wanted, so
ignore it.

> Anyway, this is what I already have. It duplicates the hierarchy with
> empty files, but I have to add support for sparse files. That won't be
> too hard, but maybe I'm re-inventing the wheel here.
> 
> #!/bin/bash
> 
> src=$1
> dst=$2
> 
> cd "$src" || exit $?
> IFS=$'\n'
> find . |
>       while read file
>       do
>               if [[ -d $file ]]
>               then
>                       [[ -d "$dst/$file" ]] ||
>                               mkdir -p "$dst/$file"
>               elif [[ -f $file ]]
>               then
>                       [[ -d "$dst/${file%/*}" ]] ||
>                               mkdir -p "$dst/${file%/*}"
>                       touch "$dst/$file"
>               fi
>       done

Ok, I misunderstood. You also want the files but empty. Why do you need
support for sparse files? Do you need to manage other types of file
(symlinks, FIFOs, etc.)

Reply via email to