如何建立沒有檔案的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

相關內容