나는 ~을 찾고 있다도구또는쉘 스크립트또는다른 프로그램두 개 이상의 폴더 또는 디스크를 동기화합니다.
그러나 누락된 파일을 복사하고 싶지 않고 다음과 같은 다른 폴더에 심볼릭 링크하기 때문에 rsync 도구와 다릅니다.
폴더에 있는 경우ㅏ파일이 있어요ㅏ그리고두번째및 기타 폴더씨파일이 있습니다디:
ㅏ
ㅏ
두번째
씨
디
그리고 폴더에는두번째파일이 있어요1그리고 폴더2파일이 있습니다삼:
두번째
1
2
삼
나는 다음과 같은 프로그램을 원한다.동기화(기호 동기화, 그냥 발명된 이름), 명령에 의해 호출됩니다. 예:동기화/A/B해당 폴더를 다음과 같이 변경합니다.
ㅏ
ㅏ
두번째
씨
디
1(ln - 초)
2(ln - 초)
3초)
그리고
두번째
1
2
삼
a (ln-s)
b (ln-s)
c (ln-s)
d (ln-s)
어디ln-s해당 파일에 대한 심볼릭 링크가 이 폴더에 생성되었음을 나타냅니다. 예:a (ln-s)명령을 나타냅니다.ln -s /A/a /B/a사용되었습니다.
누구든지 나를 도울 수 있다면 매우 감사하겠습니다. 감사해요.
답변1
이 시도:
#!/bin/sh
srcdir="$1"
dstdir="$2"
if [ -h "$srcdir" ]; then
val=`readlink "$srcdir"`
if [ ! -h "$dstdir" ]; then
rm -rf "$dstdir"
fi
ln -s "$val" "$dstdir"
elif [ -d "$srcdir" ]; then
if [ ! -d "$dstdir" ]; then
rm -rf "$dstdir"
fi
mkdir "$dstdir"
for i in `ls -1A "$srcdir"`; do
$0 "$srcdir/$i" "$dstdir/$i"
done
touch -a -r "$srcdir" "$dstdir"
touch -m -r "$srcdir" "$dstdir"
else
if [ ! -f "$dstdir" ]; then
rm -rf "$dstdir"
fi
ln "$srcdir" "$dstdir"
fi
이는 블록 장치, 명명된 파이프, 소켓 등과 같은 "특수" 파일을 처리하지 않습니다.