リンクの多いフォルダがあります。
フォルダ内でリンクを移動することができ、まだ同じデータを指すように、これらのリンクを絶対に作成しました。フォルダに移動すると、相対リンクが失われます。
しかし、フォルダを外部ハードやサーバーなどの他のシステムに移動すると問題が発生します。これにより、すべての絶対リンクのアドレスベースが正しくありません。
リンクが指すアドレスに変数を含めるようにすることで、この問題を解決できます。
それは可能ですか?
答え1
あなたの質問に対する答えは他のシンボリックリンクのようです。私が知っている限り、シンボリックリンクはDragonFlyBSDにのみ存在します(前の質問を参照:動的シンボリックリンク)
答え2
注文する
symlinks -cr folder
すべての絶対記号リンクをfolder
相対記号リンクに変換します。したがって、正しい相対位置を指すリンクを使用してフォルダ全体を移動できます(すべての他のファイルを指すと仮定folder
)。
それからまるで…
find folder -type l -exec echo 'LNK=$(readlink -f "{}");rm -fv "{}";ln -sv "$LNK" "{}"' ';' > xlinks
chmod +x xlinks
./xlinks
...すべてのリンクを相対リンクから絶対リンクに変換します。
(注:実行コマンドから直接実行することを放棄しましたfind
。それにもかかわらず、これが何をするかを確認する機会を提供します!)
答え3
ケーキを持っていても食べることはできません。相対リンクは通常移動し、ツリー全体または一部を別の場所にコピーできるため、これはより良い方法です。
階層からファイルを移動すると、何が明確ではありません。しなければならない発生:リンクがあり、実行するa -> b
ときに指す必要がありますか?それはあなた次第です。シンボリックリンクは場所を指します。ファイルを指すには、ハードリンクを使用します(ディレクトリでは不可能です)。c -> d
mv b d
a
d
ファイルを移動しましたが、以前の場所からファイルを検索するには、古い場所から新しい場所にシンボリックリンクを追加します。