Rsync完璧なコピー:ソフトリンクは..dirになります。

Rsync完璧なコピー:ソフトリンクは..dirになります。

マウントされたディスクからリモートでマウントされた別のディスクに「複製」します。私はそれらをローカルとリモートと呼びます。ローカルはスラックウェア、リモートUbuntuはローカル

df -h /mnt/
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/fedora-root   49G  4.3G   43G  10% /mnt

遠隔で

 df -h /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk1p2   57G  7.2G   47G  14% /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29

ローカルでこのコマンドを使用した後、rsyncが操作を正しく完了できないことがわかりました。

cd /mnt
 for i in * ;do rsync -avP --delete --ignore-errors $i/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/$i; done

たとえば、ローカルで表示します。

file bin
bin: symbolic link to usr/bin

そしてリモートで...

file /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/bin/
/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/bin/: directory

リポジトリをリモートで破棄し、シンボリックリンク(ローカル)にする必要があります。 rsyncのオプションは何ですか?使用:

rsync -avPl rsync -rvPl

動作しません

答え1

-l()オプションは()によって暗示されますが、ターゲットディレクトリが-linksシンボリックリンクになるようにするには、-K()も必要です。既存の構造を変更する必要があるかもしれません。-a--archive--keep-dirlinks--delete-before

rsync -avKP --delete --ignore-errors src/ 192.168.0.75:dst/

/bin元のコードを詳しく見てみると、を含む今見えるサーバーの最上位レベルを繰り返しています/usr。この場合は/binシンボリックリンクですが、/usr/binコードはそれをrsyncwithに渡します$i/。これはと同じです/bin/。したがって、逆参照したrsyncのでシンボリックリンクとして扱わないでください$i/

forループを削除してディレクトリrsyncツリー全体を処理することで、最上位シンボリックリンクを表示して正しく送信できます。

答え2

素晴らしい「解決方法」を見つけました。

代わりに

cd /mnt
 for i in * ;do rsync -avXHhP --delete --ignore-errors $i/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/$i; done

はい

rsync --avXHhP --delete --ignore-errors /mnt/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29 ; done

動作し、ディレクトリはシンボリックリンクでも同じです。

編集:バックアップブートでより有利な-avXHhPを使用して修正しました。

関連情報