
ある場所から別の場所にディレクトリ構造をコピーする必要があります。フォルダとシンボリックリンクをコピーするだけです。
私はコマンドを使用します
find $SOURCE_PATH/ \( -type l -o -type d \) -printf "%P\0" | rsync --files-from - --from0 -av $SOURCE_PATH $USER@$DESTINATION_SERVER:/$DESTINATION_PATH/$SOURCE_PATH
コマンドが成功すると、フォルダとリンクがコピーされます。私の問題は、リンクが以前の宛先を指しているためです。
私のソースパスはアプリケーション/cg/devと
宛先パスはTMP/アプリケーション/cg/dev
これで、コピーしたリンクはapp/cg/dev/somefolderを指します。私は彼らが指す必要がありますtmp/app/cg/dev/somefolder.
すべてのリンクを同期した後に変更する良い方法は、ターゲットパスをリンクするのではなくリンクパスを読むことができる場合です。はい
find . -type l | while read l; do
concatenate destination folder and readlink l
done
誰かがこのコードを書くのに役立ちますか?