ファイルなしでLinuxディレクトリとサブディレクトリ構造を作成する方法

ファイルなしでLinuxディレクトリとサブディレクトリ構造を作成する方法

以下のように、既存のLinuxディレクトリとフォルダサブディレクトリのミラーを作成する必要があります。

"/opt/current" ディレクトリには、別のレベルの 20 個のサブディレクトリ、別のレベルの 50 個のサブディレクトリなどがあります。親ディレクトリからサブディレクトリまで、合計1000のサブディレクトリレベルがあります。 /opt/current は Oracle ZFS Appliance にインストールされます。

1対1のディレクトリのように手動で権限を作成して適用するのではなく、新しい場所/ opt / Newに正確なミラーディレクトリ/サブディレクトリ構造を作成する方法です。 /opt/New は他の ZFS デバイスにマウントされます。

/opt/currentパスと同じ所有者/グループ/その他の権限を使用して、/opt/Newパスから親から子への完全なディレクトリ構造を作成する方法/スクリプトはありますか?

ありがとう、CG

答え1

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

rsyncこれは、ファイルのコピーを避けながらinのディレクトリ構造を正確にコピーするのに役立ちます。/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/")

一部の実装では、NULで区切られたファイル名を受け入れるオプションをpax使用して、コピーするNULで区切られたファイルのリストを取得することができます。-0

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

-print0POSIXではなく拡張でもあります)。

答え3

または選択できますrsync

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

答え4

次のスクリプトを作成できます。ファイルに入れてください。

-- bashスクリプト/kshスクリプト構文はシェルに応じて変更する必要があります----

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

サーバーからファイルを作成しています。

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

関連情報