シンボリックリンクをシンボリックリンクとしてマシン間でコピーする方法は?


13

2つの同一のシステムがあるとします。最初のシステムでは、シンボリックリンクを作成しました。sftpを介してそのシンボリックリンクをコピーしたい2番目のものとシンボリックリンクは同じように機能します(つまり、シンボリックリンクが/etc/にリンクしている場合、それをコピーした後、シンボリックリンクのみがコピーされ、シンボリックリンクのみがリンクされます(リンクされたファイルではありません))

これを行う方法/これができるかどうかに関するアイデアはありますか?私は唯一のシンボリックリンクをコピーしたい、何もありません。参照のみ。


すでに説明したように機能しませんか?
mikeserv 2015年

1
sftpあなたにそれをさせません。rsyncできる、できるssh cp ...
roaima 2015年

私が達成しようとしていることは、シンボリックマップをコピーすることです...ファイルは必要ありません。FOLDER> ETCを示すコードのビットが欲しいだけです...サーバーからシンボリックリンクを作成して移動したいだけです。必要なサーバーにそれを...囲まれたファイルからハッキングしようとしています
TheHidden

1
@roaima ssh cp?SCPのように?どうやって?
technical_difficulty

回答:


12

シンボリックリンクをタール化​​した場合、タールボールをリモートマシンに好きな方法でコピーできます。解凍すると、シンボリックリンクのみをコピーしたことがわかります。例えば:

これをテストするには、まずテキストファイルを作成しました。

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

シンボリックリンクはあるが、それがポイントしていた元のファイルはないことがわかります。

もちろん、関係を維持しながら元のファイルとシンボリックリンクの両方を転送したい場合は、両方をtarballに入れれば両方が転送されますが、解凍したときにシンボリックリンクが元のファイルを正しく指しているはずです。宛先の場所にあるtarball。


これはかなり興味深いですが、残念ながら私には役に立たないと思います。スレーブを制御することはできません。これらのSFTPはすべて、APIを介してフォルダーをロックダウンするために行われますが、シンボリックリンクを使用してボックスをハックしようとしています。緊急時に選択した更新をプッシュするマスターからアクセスする必要があります。安全上の理由から、送信したファイルは実行されませんが、シンボリックリンクが可能であれば、シンボリックリンクを介してファイルを置き換えることにより、(理論的には)既存のプロセスにコードを挿入できます。 ...しかし、それを行うには、100%以上のシンボリックリンクをコピーする必要があります:(
TheHidden

@ user1779617サーバーとクライアントの両方で同じ意味で使用されているように見えるため、「スレーブ」と「マスター」の意味がまだはっきりしていません。サーバー上にシンボリックリンクを作成する必要がある場合は、SFTP を使用して作成できますが、構成によっては、SFTPデーモンのchrootされたレルムの外側を見ることができない場合があります。sftplinux.die.net/man/1/sftp)のmanページを参照してください!symlink特に必要と思われるもののためのコマンドがあります。
ポールモン2015

5

シンボリックリンクをどのように処理したいのか、少し不明確です。私が理解しているように、他のシステムでシンボリックリンクを再作成したいと考えています。シンボリックリンクはファイルシステムに依存し、ファイルのコピーに使用されるプロトコルはそれを認識している必要があります。良い例はrsync-aオプションの使用です。

より具体的には、-lオプションですが-a、おそらくあなたが望むものです。

ターゲットをプルすることなく(リンクを逆参照することなく)シンボリックリンクを再作成します。


私はhmを参照してください。ファイルのようにコピーしてリンクを保持する方法はないのでしょうか。私は、同じシステムでシンボリックリンクを構築してそれをコピーすることを望んでいたファイルを直接移動する機能しか持っていませんか、それとも期待していますか?
TheHidden

@ user1779617まず第一に、「移動」と言うとき、実際には「移動」または「コピー」を意味しますか?「移動」とは、元のファイルを削除することを意味するためです(これが、質問を編集した理由でもあります)。次に、特定のファイル転送プロトコル(FTPのみなど)に制限されていますか?もしそうなら、私たちはそれの範囲内でそれについて話し合うべきであり、そして私たちが話しているファイルシステムについてです。
ポールモン2015年

SFTPのみ、シンボリックリンクが必要なマシンからのみダウンロードするため、マスターからスレーブへのコピーはSFTPのみで、sftp接続はスレーブからのみです。
2015年

@ user1779617「クライアント」(スレーブ)と「サーバー」(マスター)という意味だと思います。ファイルシステムを抽象化sftpするため、-rスイッチを使用してサブディレクトリを通過しますが、シンボリックリンクは追跡しません。sftpホスト上でのシンボリックリンクの作成をサポートします。あなたは、少なくとも、ダウンロードしようとする必要があり、単にシンボリックリンク(シンボリックリンクがあるとき~/etc- > /etc/やるget etc末尾せずに/)、何が起こるか参照してください。それはサーバーとクライアントのFSに依存します。元の質問を適宜編集してください!
ポレモン2015年

3

私は@polemonがすでにこれに答えていることを知っています。

しかし、迅速な解決のために少しだけやっています。

使用したいスイッチを知るために、man rsyncを実行する必要がありました...

rsync -avz -e ssh /file or sym link/to/copy/ user@ip:/dest/path/

ただし、あなたの場合、リンクが壊れていないことを確認する必要があります!


2

非常に簡単な解決策(ホームディレクトリ用):

tar -c SYMLINKFILE | ssh machine 'tar -x'

または

tar -c SYMLINKFILE | ssh machine 'tar -xC /some/other/location  '

例えば

tar -c .bashrc | ssh another_machine 'tar -x'

シンボリックリンクされた.bashrcを別の(ネットワークなどの)宛先に配置するため。


0

他の回答は、シンボリックリンクを別のマシンに転送する方法をすでに説明しています。ただし、シンボリックリンクの転送方法に関係なく、このシンボリックリンクを使用し/etc/てFTP、SFTP、SCP、SSH、またはその他の方法でファイルにアクセスすることはできません。これらのサービスは、特定のディレクトリにchrootされるか、明示的に共有されていないファイルへのアクセスを提供できない傾向があります。もちろん、古いシステムでこれを回避する方法は常にありますが、このような脆弱性は発見され次第、パッチを当ててアップグレードする傾向があります。申し訳ありませんが、あなたのやりたいことが実現できるとは思いません。


結構公正で、私が試したところ少なくとも推測します:(
TheHidden
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.