Como replicar una estructura de directorios unix?
A veces puede ser necesario replicar un arbol de directorios manteniendo permisos y propietarios PERO sin replicar los ficheros (porque ocupan mucho espacio, por ejemplo).
unix te posee
Se supone que se puede hacer en dos pasos comprimiendolos en un tar. 1. ejecutar el comando find para sacar un listado de directorios Imaginemos que queremos replicar lo que hay en /home
cd /home
find . -type d -print > directorios.txt
2. Comprimir esa lista de directorios.
tar cpf home.tar --no-recurse < directorios.txt
Pero puede que tar no reconozca la opcion --no-recurse. Algo asi tampoco cuela (al menos si solo quieres mover directorios):
find . -type d -print -exec cp {} destino/ ;
Entonces, que hacer? Esta preguta se responde en un libro de orielly, en concreto el de recetas perl (perl cookbook). Si se usa tal cual puede dar errores, asi que le he metido comentarios y he quitado los die. Ahora parece que hace su trabajo.
#!/usr/bin/perl -w
# symirror - build spectral forest of symlinks
use strict;
use File::Find;
use Cwd;

my ($srcdir, $dstdir);
my $cwd = getcwd();
die "usage: $0 realdir mirrordir" unless @ARGV == 2;

for (($srcdir, $dstdir) = @ARGV) {
    my $is_dir = -d;
    next if $is_dir;                        # cool
    if (defined ($is_dir)) {
        die "$0: $_ is not a directory
";
    } else {                                # be forgiving
        mkdir($dstdir, 07777); # or die "can't mkdir $dstdir: $!";
    }
} continue {
    s#^(?!/)#$cwd/#;                        # fix relative paths
}

chdir $srcdir;
find(&wanted, '.');

sub wanted {
    my($dev, $ino, $mode,$nlink,$uid,$gid) = lstat($_);
    my $name = $File::Find::name;
    $mode &= 07777;                 # preserve directory permissions
    $name =~ s!^./!!;              # correct name

    print "Nombre: $name Modo: $mode Usuario: $uid Grupo: $gid
";

    if (-d _) {                     # then make a real directory
        mkdir("$dstdir/$name", $mode);
        chown($uid, $gid, "$dstdir/$name");
            #or die "can't mkdir $dstdir/$name: $!";
    }
 #else {                        # shadow everything else
 #       symlink("$srcdir/$name", "$dstdir/$name");
            #or die "can't symlink $srcdir/$name to $dstdir/$name: $!";
 #   }
}

Vale, seguro que hay mejores formas, en fin. Creo que en debian hay un paquete concreto que lo hace.