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

我想创build一个我们的多TB文件服务器的结构克隆。 我知道cp -parents可以移动一个文件,它是父级结构,但有什么方法可以完整地复制目录结构吗?

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

你可以做这样的事情:

find . -type d >dirs.txt 

然后创build目录列表

 xargs mkdir -p <dirs.txt 

在目标上创build目录。

 cd /path/to/directories && find . -type d -exec mkdir -p -- /path/to/backup/{} \; 

我不知道,如果你正在寻找在Linux上的解决scheme。 如果是这样,你可以试试这个:

 $ mkdir destdir $ cd sourcedir $ find . -type d | cpio -pdvm destdir 

这是一个使用rsync的简单解决scheme:

 rsync -av -f"+ */" -f"- *" "$source" "$target" 
  • 一条线
  • 没有空间的问题
  • 保留权限

那里find了这个解决scheme

这复制目录和文件属性,但不复制文件数据:

 cp -R --attributes-only SOURCE DEST 

那么你可以删除文件属性,如果你不感兴趣的话:

 find DEST -type f -exec rm {} \; 

这工作:

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

只要replaceSOURCE_DIR和DEST_DIR。

以下解决scheme在各种环境中都能很好地工作:

 sourceDir="some/directory" targetDir="any/other/directory" find "$sourceDir" -type d | sed -e "s?$sourceDir?$targetDir?" | xargs mkdir -p 

用适当的值replacetarget_dirsource_dir

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

testing在OSX + Ubuntu上。

如果可以从Windows机器访问,则可以使用xcopy和/ T和/ E来复制文件夹结构(/ E包含空文件夹)

http://ss64.com/nt/xcopy.html

[编辑!]

这一个使用rsync重新创build目录结构,但没有文件。 http://psung.blogspot.com/2008/05/copying-directory-trees-with-rsync.html

实际上可能会更好:)

来自Sergiy Kolodyazhnyy的Python脚本发布在仅复制文件夹而不是文件? :

 #!/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)) 

或从shell:

 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 

供参考:

  • 复制顶级文件夹结构,而不用在linux中复制文件
  • 我如何复制一个目录树而不是Linux中的文件?