システムを移動した後、これらのシンボリックリンクをどのように再接続しますか?

システムを移動した後、これらのシンボリックリンクをどのように再接続しますか?

FAT32メモリカードを使用してファイルシステムとシンボリックリンクをUbuntu 14.04から16.04に移動しましたが、これによりBitTorrentSyncの使用が中断されたようです。違いは、これらのリンクがXSymのおかげで私のOSXインストールの残りの部分であるということです。私が作ったのはls -la $HOME | grep Mathシンボリックリンクでした。

-rw-r--r--  1 masi masi   1067 May 17 21:28 Math

テキストエディタには何がありますか?

XSym
0078
48055bd2d9c13568c969e1eb8d6a22ac
/Users/masi/Math/

反対側を指す必要があります/Users/masi/LOREM/Math/。リンクがまだ機能していないため、PATHを手動で変更するだけでは機能しません。 問い合わせコマンド以下にも適用できます。

find /Users/masi/Math/ /
    -lname '/Users/masi/LOREM/Math/*' \ 
    -exec sh -c 'ln -snf "/mnt$(readlink "$0")" "$0"' {} \;

ソースとターゲットを正しい順序でインポートしているかどうかはわかりません。

システム:Ubuntu 14.04、Ubuntu 16.04

ベストアンサー1

私は2つの考えられる解決策を考えました。

1. すべてのディレクトリを繰り返してLOREMシンボリックリンクします。$HOME

cd "$HOME/LOREM"
for item in *
do
    test -d "$item" || continue
    mv -f "$HOME/$item" "$HOME/$item.DELETE_ME_LATER" 2>/dev/null
    ln -s "$HOME/LOREM/$item" "$HOME/$item"
done

# Once you are happy that only the correct files have been replaced
# rm "$HOME"/*.DELETE_ME_LATER

rmたとえば、スクリプトの前に追加して、変更する前にスクリプトの効果を確認できます。lnechoecho rm -f "Users/masi/$item"

2. 既存のファイルセットを処理し、それを正しいシンボリックリンクに変換します。

シンボリックリンクでなければならないファイルを識別する具体的な内容がないため、これには少しの経験的方法(推測)が必要です。

このようなことがうまくいくかもしれません。

for file in *
do
    # Skip files that we have already processed
    [[ $file =~ DELETE_ME_LATER ]] && continue

    # Look for a path-like string in the file
    path=$(grep "^$HOME/" "$file")
    if test -d "$path"
    then
        # It is a directory
        mv -f "$file" "$file.DELETE_ME_LATER"
        ln -s "$HOME/LOREM/$file" "$file"
    fi
done

# Once you are happy that only the correct files have been replaced
# rm *.DELETE_ME_LATER

同様にmv、ドアの前にlnプレフィックスを付けてecho変更を適用しなくても効果を確認できます。

おすすめ記事