如何创建没有文件的linux目录和子目录结构

如何创建没有文件的linux目录和子目录结构

我需要创建现有 Linux 目录和文件夹子目录的镜像,如下所示。

我们有“/opt/current”目录,其中另一层有 20 个子目录,再一层有 50 个子目录,依此类推...还有更深的子目录层,从父目录到子目录总共有 1000 个目录。 /opt/current 安装在 Oracle ZFS 设备上。

如何在新位置 /opt/New 中创建精确的镜像目录/子目录结构,而不是像一对一目录那样手动创建并应用权限。 /opt/New 安装在另一个 ZFS 设备上。

有没有一种方法/脚本可以在 /opt/New 路径中创建与 /opt/current 路径中相同的所有者/组/其他权限的从父到子的整个目录结构?

谢谢,CG

答案1

rsync -av --include='*/' --exclude='*' /opt/current/ /opt/New

这将用于精确复制inrsync的目录结构,同时避免复制任何文件。/opt/local/opt/New

选项-a( --archive) 将确保保留所有权限等(此选项也意味着递归复制),并且-v( --verbose) 将为您提供命令进度的指示。

我们--include='*/'在传输中明确包含任何目录,但排除其他所有目录--exclude='*'。命令行上这些选项的顺序很重要。

/末尾的也/opt/current/很重要,因为没有它,结果将是创建/opt/New/current而不是直接写入/opt/New

答案2

POSIXly 并假设目录名称不包含换行符,并且$srcdir$dstdir是绝对路径:

(cd -P "$srcdir" && find . -type d | pax -rwdpe "$dstdir/")

某些pax实现支持获取要复制的以 NUL 分隔的文件列表,并带有-0允许使用 NUL 的文件名的选项:

(cd -P "$srcdir" && find . -type d -print0 | pax -0rwdpe "$dstdir/")

-print0也是一个非 POSIX 扩展)。

答案3

或者可以选择rsync

find /opt/current -type d -print0 | cpio -0pma backup/dir/

答案4

您可以制作如下脚本...将其放入文件中:

-- bash 脚本/ksh 脚本语法需要根据 shell 进行更改 ----

find . -name "*"|while read line
do
        if [[ -d ${line} ]]
        then 
                echo ${line}
        fi
do

在服务器上您正在制作文件

cat file |while read line
do
mkdir ${line}
done

相关内容