파일 없이 리눅스 디렉토리와 하위 디렉토리 구조를 만드는 방법

파일 없이 리눅스 디렉토리와 하위 디렉토리 구조를 만드는 방법

아래와 같이 기존 Linux 디렉터리와 폴더의 하위 디렉터리의 미러 이미지를 생성해야 한다는 요구 사항이 있습니다.

우리는 20개의 하위 디렉토리로 구성된 또 다른 레이어와 50개의 하위 디렉토리로 구성된 또 다른 레이어를 포함하는 "/opt/current" 디렉토리를 가지고 있습니다. 하위 디렉토리에 대한 더 깊은 레이어는 거의 없으며 총 상위에서 하위까지 1000개의 디렉토리가 있습니다. /opt/current는 Oracle ZFS 어플라이언스에 마운트됩니다.

일대일 디렉터리와 같이 수동으로 사용하지 않고 새 위치/opt/New에 정확한 미러 디렉터리/하위 디렉터리 구조를 만들고 권한을 적용하는 방법입니다. /opt/New가 다른 ZFS 장비에 마운트되었습니다.

/opt/new 경로에서 /opt/current 경로와 동일한 소유자/그룹/기타 권한을 사용하여 상위에서 하위로 전체 디렉토리 구조를 생성하는 방법/스크립트가 있습니까?

고마워요, CG

답변1

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

이는 파일 복사를 피하면서 in rsync의 디렉토리 구조를 정확하게 복제하는 데 사용됩니다./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

관련 정보