
私は〜を探していますツールまたはシェルスクリプトまたはその他のプログラム複数のフォルダまたはディスクを同期します。
ただし、不足しているファイルをコピーしたくなく、次のような他のフォルダにシンボリックリンクするため、rsyncツールとは異なります。
フォルダにある場合ㅏファイルがあります。ㅏそして第二その他のフォルダ氏ファイルがありますD:
ㅏ
ㅏ
第二
氏
D
そしてフォルダに第二ファイルがあります。1そしてフォルダ2ファイルがありますサム:
第二
1
2
サム
私は次のプログラムが欲しい。同期(シンボル同期、ちょうど発明された名前)、コマンドによって呼び出されます。例:同期/A/Bそのフォルダを次のように変更します。
ㅏ
ㅏ
第二
氏
D
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
これは、ブロックデバイス、名前付きパイプ、ソケットなどの「特殊」ファイルを処理しません。