2つの同じシステムがあるとしましょう。最初のシステムではシンボリックリンクを作成しました。 2番目の方法では、sftpを介して対応するシンボリックリンクをコピーしたいので、シンボリックリンクは同じように機能する必要があります(つまり、シンボリックリンクがに接続されている場合はコピーした/etc/
後、シンボリックリンクのみがコピーされ、シンボリックリンクのみがコピーされます(リンクではありません)。 ))
どのようにできるか、できるかというアイデアはありますか?私ただ参考のためだけにシンボリックリンクをコピーしたいです。
答え1
シンボリックリンクを圧縮したら、任意の方法で圧縮されたアーカイブをリモートシステムにコピーできます。解凍すると、シンボリックリンクのみがコピーされ、他のものはコピーされていないことがわかります。たとえば、
これをテストするために、まずテキストファイルを作成しました。
echo this is a test > file.txt
次に、ファイルへのシンボリックリンクを作成し、tar gzipで圧縮します。
ln -s file.txt link.lnk
tar czvf tarball.tar.gz link.lnk
このファイルを別のコンピュータに転送して解凍します。
tar xzvf tarball.tar.gz
シンボリックリンクはありますが、シンボリックリンクが指す元のファイルはありません。
もちろん、関係を維持しながらソースファイルとシンボリックリンクの両方を転送したい場合は、両方をタールボールに入れると両方が送信され、シンボリックリンクは解凍時に元のファイルを正しく指す必要があります。ターゲットタールボール。
答え2
シンボリックリンクをどのように処理したいのか正確には不明です。私が理解したように、他のシステムでシンボリックリンクを再作成したいと思います。シンボリックリンクはファイルシステムによって異なり、ファイルのコピーに使用されるプロトコルはそれを認識する必要があります。良い例は次のとおりです。rsync
オプションがあります-a
。
より具体的に言えば、その-l
オプションですが-a
、おそらくそれがあなたが望むものでしょう。
ターゲットを引き寄せずに(リンクの逆参照)、シンボリックリンクを再生成します。
答え3
@polemonがこの質問にすでに答えていることを知っています。
しかし、問題を迅速に解決するために最善を尽くしてください。
どのスイッチを使用したいかを知るには、man rsyncを実行する必要があります。
rsync -avz -e ssh /file or sym link/to/copy/ user@ip:/dest/path/
しかし、あなたの場合、リンクが壊れていないことを確認する必要があります!
答え4
sshfsを使用して、リモートシステムをローカルシステムにマウントできます。
sshfs remote.machine:/home/name/remotedir/ /home/name/localdir/
これで、新しいマウントポイントをローカルシステムファイルシステムの一部として処理し、シンボリックリンクを正常にコピーできるようになりました。