ローカルのdebianリポジトリを最新の状態に保つためにrsync(1)を使用しています。最近、保存に使用しているディスクの空き容量が少なくなってきたため、シンボリックリンクを使用して、一部のディレクトリを同じサイズの別のディスクに移動できるようにしました。
残念ながら、rsyncはシンボリックリンクを削除し、ほぼ完全なディスクを補充しています。いくつか検索したところ、--keep-dirlinks
rsync のオプションが見つかりました。これは、私の問題を修正するためにカスタマイズされたようです。
それだけはしません。ターゲットのシンボリックリンクはまだ削除されています。
これが私のrsyncコマンドです:
rsync --recursive --keep-dirlinks --links --hard-links --times --verbose \
--delete --delete-excluded $EXCLUDE $SOURCE_EXCLUDE \
$RSYNC_HOST::$RSYNC_DIR/pool/ $TO/pool/
EXCLUDEは、私が興味を持たない多数のアーキテクチャーを排除するために拡張されてい--exclude binary-alpha/ --exclude disks-alpha ...
ます。rsyncが起動する前のプールディレクトリは次のようになっています。
lrwxrwxrwx 1 root root 23 2014-09-22 13:58 contrib -> /u2/debian/pool/contrib
drwxrwxr-x 62 root root 4096 2012-04-09 03:02 main
lrwxrwxrwx 1 root root 24 2014-09-22 13:58 non-free -> /u2/debian/pool/non-free
rsyncが起動すると、次のようになります。
receiving incremental file list
deleting non-free
deleting contrib
./
contrib/
contrib/a/
など、シンボリックリンクはファイルでいっぱいのディレクトリに置き換えられます。
他のrsyncオプションのいくつかが邪魔してい--keep-dirlinks
ますか?どれを組み合わせることはできませんか?それとも、問題の原因となっているオプションの順序ですか?