Linux 拷贝目录结构

今天应用迁移过程中,有个 FtpLocal 目录体积过大,但是数据又不是必须的,而程序又脑残得不会自动创建目录,所以需要拷贝 FtpLocal 的目录结构,但不涉及内容。

说到拷贝,第一时间就想到 cp 命令,但是查遍了所有 man 文档,也找不到拷贝目录结构的选项,看来只能使用“组合拳”了。

既然不能直接拷贝目录结构,那不妨进行批量目录创建,以达到同样的效果。

创建目录,首先想到的是 mkdir -p dir ,只需要把 FtpLocal 中的 dir 列出来,就能实现批量创建目录。而列出目录路径,有两种方式,lsfind ,下面就说说使用这两种方式批量创建与原路径相同的目录结构。

ls 方式

首先使用 ls 列出改目录结构下的所有目录并输出到文件:

1
ls -R FtpLocal | grep : | tr -d : > FtpLocal_tree.txt

拷贝 FtpLocal_tree.txt 到指定路径,进行批量目录创建:

1
cat FtpLocal_tree.txt | xargs mkdir -p

find 方式

ls 的方式类似,先列出所有目录并输出到文件:

1
find FtpLocal -type d > FtpLocal_tree.txt

拷贝 FtpLocal_tree.txt 到指定路径,进行批量目录创建:

1
cat FtpLocal_tree.txt | xargs mkdir -p

Else

find 还可以先一步到位,创建出相同结构的文件夹:

1
find FtpLocal -type d -exec mkdir -p tmp/{} \;

然后把 tmp 下面的 FtpLocal 拷贝到需要的地方就可以了。