
아래와 같이 기존 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