代码之家  ›  专栏  ›  技术社区  ›  r00fus

将文件夹结构(SAN文件)从一个位置复制到另一个位置

  •  72
  • r00fus  · 技术社区  · 14 年前

    我想创建我们的多字节文件服务器结构的克隆。我知道cp——家长可以移动一个文件和它的父结构,但是有没有什么方法可以完整地复制目录结构?

    我想复制到Linux系统,我们的文件服务器安装在那里。

    12 回复  |  直到 6 年前
        1
  •  132
  •   Greg Hewgill    14 年前

    find . -type d >dirs.txt
    

    xargs mkdir -p <dirs.txt
    

        2
  •  66
  •   amphetamachine    14 年前
    cd /path/to/directories &&
    find . -type d -exec mkdir -p -- /path/to/backup/{} \;
    
        3
  •  20
  •   Gildas    7 年前

    rsync -av -f"+ */" -f"- *" "$source" "$target"
    

    I found this solution there

        4
  •  6
  •   sudo make install Gazler    9 年前

    $ mkdir destdir
    $ cd sourcedir
    $ find . -type d | cpio -pdvm destdir
    
        5
  •  4
  •   toliveira    9 年前

    cp -R --attributes-only SOURCE DEST
    

    find DEST -type f -exec rm {} \;
    
        6
  •  2
  •   user1133275    8 年前

    find ./<SOURCE_DIR>/ -type d | sed 's/\.\/<SOURCE_DIR>//g' | xargs -I {} mkdir -p <DEST_DIR>"/{}"
    

        7
  •  1
  •   yaccob    11 年前

    sourceDir="some/directory"
    targetDir="any/other/directory"
    
    find "$sourceDir" -type d | sed -e "s?$sourceDir?$targetDir?" | xargs mkdir -p
    
        8
  •  1
  •   Tony Vijay    8 年前

    target_dir source_dir

    cd target_dir && (cd source_dir; find . -type d ! -name .) | xargs -i mkdir -p "{}"
    

        9
  •  1
  •   Thim    7 年前

    find . -type d -exec echo "'{}'" \; > dirs2.txt
    

    mkdir -p <../<SOURCEDIR>/dirs2.txt
    
        10
  •  0
  •   Franck Dernoncourt    7 年前

    Copy only folders not files?

    #!/usr/bin/env python
    import os,sys
    dirs=[ r for r,s,f in os.walk(".") if r != "."]
    for i in dirs:
        os.makedirs(os.path.join(sys.argv[1],i)) 
    

    python -c 'import os,sys;dirs=[ r for r,s,f in os.walk(".") if r != "."];[os.makedirs(os.path.join(sys.argv[1],i)) for i in dirs]' ~/new_destination
    

        11
  •  0
  •   Christopher K. cweiske    6 年前

    syncDirs.php

    <?php
    foreach (new DirectoryIterator($argv[1]) as $f) {
        if($f->isDot() || !$f->isDir()) continue;
            mkdir($argv[2].'/'.$f->getFilename(), $f->getPerms());
            chown($argv[2].'/'.$f->getFilename(), $f->getOwner());
            chgrp($argv[2].'/'.$f->getFilename(), $f->getGroup());
    }
    

    sudo php syncDirs.php /var/source /var/destination