将文件夹结构(无文件)从一个位置复制到另一个位置
我想创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_dir
和source_dir
:
cd target_dir && (cd source_dir; find . -type d ! -name .) | xargs -i mkdir -p "{}"
testing在OSX + Ubuntu上。
如果可以从Windows机器访问,则可以使用xcopy和/ T和/ E来复制文件夹结构(/ E包含空文件夹)
[编辑!]
这一个使用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中的文件?