아래와 같이 기존 Linux 디렉터리와 폴더 하위 디렉터리의 미러를 만들어야 합니다.
"/opt/current" 디렉터리에는 또 다른 수준의 20개 하위 디렉터리, 또 다른 수준의 50개 하위 디렉터리 등이 있습니다. 상위 디렉터리에서 하위 디렉터리까지 총 1000개의 하위 디렉터리 수준이 있습니다. /opt/current는 Oracle ZFS Appliance에 설치됩니다.
일대일 디렉터리처럼 권한을 수동으로 만들고 적용하는 대신 새 위치 /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