以下のように、既存の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/")
(-print0
POSIXではなく拡張でもあります)。
答え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