ファイル間に違いがなければソフトリンクを維持し、違いがあればディレクトリをコピーしたいと思います。使っています
rsync -rk src dis
srcにはディレクトリがあります。dir1
そこfile1
に(ソフトリンク)file2
がdis
あります。実行時のみコピーされます。ファイルをコピーしたくありません。ソフトリンクを削除してコピーしたいです。dir1->/home/dir1
/home/dir1/
file1
rsync -rk src dis
file2
/home/dir1/
/home/dir1/
src/dir1/
答え1
1回の通話ではこれは可能ではないと思いますrsync
。rsync
ファイルが変更されたかどうかをテストしてこの問題を解決し、変更された場合はコピーを実行します。
はい
# Setup
mkdir /tmp/710162
cd /tmp/710162
mkdir -p src/dir1 dis home/dir1
date >src/dir1/file1
cp -p src/dir1/file1 home/dir1
ln -s /tmp/710162/home/dir1 dis/dir1
パスワード
if rsync --dry-run --keep-dirlinks -ai src/ dis | grep -q '^[^.]'
then
echo "Changes found"
rsync -ai src/ dis
fi
インストール後すぐに実行した結果:なし(つまり、シンボリックリンクは同じままでファイルは変更されません)
who >src/dir1/file2
新しいファイルを追加した後の結果:
Changes found
.d..t...... ./
cd+++++++++ dir1/
>f+++++++++ dir1/file1
>f+++++++++ dir1/file2
この時点でシンボリックリンクが削除され、ソースファイルのコピーが新しく作成されたdir1
ディレクトリに配置されます。
(条件をテストするために使用されるテストとレプリケーションを実行するために使用されるテストの間に競合条件がある可能性がありますが、rsync
ここでは関係ありません。)