クイック検索を実行しましたが、このシナリオに関する特定の情報が見つかりませんでした。
ディレクトリがあり(パスを無視しよう)、名前をAに指定するとします。これで、ディレクトリA(Sと呼ばれる)を指すシンボリックリンクを作成します。これで、次のものが必要です。
S -> A
別のディレクトリがある場合は、Bと言って次のことをしましょう。
cp -r B/ A/
シンボリックリンクは維持されますか、それとも壊れますか? bashコマンドを使わずにpython distutils.dir_utils.copytree(B、A)を使うとしましょう。シンボリックリンクSはまだAを指していますか? AはAで残るのか、それともBになるのか?
答え1
コマンドラインからこれをかなり簡単にテストできます。
# set up test
mkdir A
mkdir B
echo "this is A" > A/test.txt
echo "this is B" > B/test.txt
echo "this is A" > A/old.txt
echo "this is B" > B/new.txt
# contents of A change on copy
ln -s A S
cat S/test.txt
cp -r B/ A/
cat S/test.txt
cat A/test.txt
# S still points to A
ls -l S/
ls -l A/
ls -l B/
Bのファイルが示すように、Aのファイルを上書きすると、AとSの両方に影響します。ただし、Aからファイルをコピーすると、AとBの間に一意の名前を持つファイルが残ります。SはまだAを指していますが、Aは変更されました。。
シンボリックリンクはパスを指します。たとえば、A を削除して S を保持する場合、S は存在しなくなった A を参照し続けます。
rm -rf A/
ls -l S/
Aという名前のテキストファイルを作成すると、SはまだパスAを指すため、テキストファイルを指します。 KusalanandaとG-Manが言ったように、AにすることはSには影響しません。または、より具体的にあなたがAにしたことは、SがAを指しているという事実には影響しません。。
echo "new text file" > A
cat S
答え2
シンボリックリンクが指すパスですS
。コマンドが実行する宛先にファイルをコピーしても、このリンクには影響しません。A
A
A
何らかの理由で名前を変更または削除すると、A
シンボリックリンクがS
壊れて使用できなくなります。その後、A
以前のディレクトリと同じ場所に呼び出される別のディレクトリ(新しいディレクトリなど)を作成すると、そのA
コンテンツS
へのシンボリックリンクが作成されます。
シンボリックリンクはS
ディレクトリとは全く別個ですA
。それ自体は、それが存在するのか、ファイルなのか、ディレクトリなのか、それとも別のものなのかはS
関係ありません。A
あなたが何をしてもA
、いいえ影響S
。
シンボリックリンクの逆参照動作S
(シンボリックリンクの使用、例:実行)は、その内容(存在する場合、ディレクトリの場合など)ls S
によって結果が異なります。A
答え3
S.txt
(別のディレクトリに)というファイルがあると想像してみてください。
あなたが探している情報はディレクトリにあります
A
。
ディレクトリに実行する操作の影響を受けませんA
。
シンボリックリンクはこれに非常に似ています。シンボリックリンクは、ターゲットに対して実行される操作の影響を受けません。