私は少し厄介な状況にあります。私は数か月前に現在の仕事を始めましたが、Apache Webサーバー(単純なPHPベースのサーバー)でWebアプリケーションを実行しています。アプリケーションのいくつかの問題を修正するためにこのコードを更新する必要があり、コードを適切なソースコード環境(つまりバージョン管理)に入れたいと思います。
無関係な詳細の説明をスキップして、ソフトウェアやその他のファイルをマシンに追加または削除せずに、Ubuntu Server 14.04(CLI)仮想マシンからディレクトリ(フォルダー)を取得する必要があります。現在、マシンにはFTPまたはSCPサーバーがないため、それらを使用できません。また、NFS共有のマウントを許可する/sbin/mount.nfsヘルパープログラムがありません(NFS共有をマウントできれば、ファイルを取得するために使用できる一連の共有フォルダーがここにあります)。
現在、私には1つのアイデアしかありません。それは、マシンを実行しているESXiホストにUSBフラッシュドライブを挿入し、そこにファイルをコピーすることです。ただし、本機にはUSBコントローラーが搭載されておらず、実稼働機であるため、平日はシャットダウンしてインストールすることができないため、営業時間外にしかインストールできません。このため、(TLDR:)buntuサーバー14.04からディレクトリを取得する方法について他に誰かアイデアがあるかどうか疑問に思いましたVM FTP、SCP、NFS共有のマウント、または新しいファイルやソフトウェアのインストールなし。
編集:すべての素晴らしい反応を期待していませんでした。今のところ私の受け入れた答えを削除します。これらの回答を確認して実験する機会があれば、他の場所に割り当てます。
持っていないことをすべて言うだけでなく、持っていることを言うのはどうですか?フォルダの大きさと空きディスク容量はどれくらいですか?
コンソールからでもCLIにまったくアクセスできないと仮定します。
SSHアクセスがない場合でも、コマンドを入力し、VMコンソールを介してサーバーを管理するための何らかのアクセスがあると仮定します。
FTPクライアントがインストールされていますか?サーバーから別の場所にFTPで転送し、ファイルをアップロードします。
POST
それらをリモートWebサーバーにアップロードNetcat(nc
)がインストールされていますか? tar | nc
をパイプ処理してデータをソケットにストリーミングし、ネットワーク上の別のコンピューターでnc | tar
を使用して受信することができます。 例
サーバーにPythonがインストールされている場合-ほぼ確実にインストールされます; Pythonは、存在することがほぼ保証されている十分なシステムサービスによって使用されています-次のコマンドを使用して、HTTPサーバーを起動し、現在のディレクトリからファイルを提供できます。
python -m SimpleHTTPServer 9999
ポート9999でWebサーバーを起動します。
このサーバーにはアクセス制御がないため、サーバーが一般にアクセス可能である場合は、これを実行したくない場合があることに注意してください。
もう1つのオプションは、tarアーカイブをネットワーク経由でパイプすることです。 Ubuntuサーバーから到達可能なIPアドレス1.2.3.4に別のコンピューター(ホスト名 "client")があるとすると、クライアントで次のコマンドを実行することでこれを行うことができます。
nc -lp 9999 > files.tar.gz
ホスト上で実行中:
tar cz /path/to/directory > /dev/tcp/1.2.3.4/9999
これによりアーカイブが作成されますが、アーカイブがディスクに書き込まれることはなく、ネットワークを介して直接ストリーミングされるため、ディスク領域が不足するリスクはありません。
仮想マシンディスクは、定期的にバックアップされる方法で保存されることが望ましいので、バックアップを新しい場所に復元してから、VMディスクを新しいVMの2番目のディスクとして使用できます。
公式のバックアップがない場合はあるはずであり、これには並べ替えが必要ですが、ディスクがLVMパーティションに保存されている場合は、スナップショットパーティションを作成し、そこからディスクをコピーすることができる場合があります。バックアップ
さて、すでに受け入れられている答えがあり、さらに、それがWebサーバーであるという事実を利用した本当に良い答えがあります。
しかし、私があまり対処していないと思う攻撃の行を指摘するだけで、コマンドラインにアクセスできる場合は、おそらくターミナルプログラムを使用しており、それらのほとんどは、スクロールオフするものをログに記録する何らかの方法を持っていますスクリーン。
したがって、この回答は、将来、Webサーバーを実行していない人に役立つ可能性があります。基本的に、一般的なLinuxツールを使用したフィールド便宜的なファイル転送と呼ばれるもの
フォルダをASCIIとして送信できます。フォルダをtarし、バイナリからASCIIに変換します。いくつかの可能性を使用します。次に、termanプログラムを実行しているマシンで、スクロールバックからASCII blob、そこからバイナリを抽出します。
tar czf - folderpath | uuencode temp.tar.gz
または
tar cvf - folderpath | base64
巨大なテキストブロックを端末にダンプします。それをスクロールバックとしてキャプチャし、テキストエディタで少しクリーンアップしてから、バイナリにデコードして戻すことができる場合は、フォルダのtar.gz
があります。確かに、PuTTY
のスクロールを大量の行に戻すようなことをしなければならないかもしれません。
必要に応じて、xxd
を使用してエンコードとデコードを行うこともできると思います。
一度にスクロールバックに収めることができなかった場合は、head
とtail
を使用して分割し、ASCIIをチャンクに送信することもできます。時間。
詳細は、アクセスできるユーティリティと、コンソールデータストリームを介してそのデータを圧縮するために必要な労力によって異なります。
(OPはWebサーバーを使用する必要があります)
それがESXiである間、VM別のvmdiskを接続する必要があります。次に、重要でないすべてのものをそのディスクに移動し、選択したツール(ssh/scp/rsync /その他)をインストールします。
サーバーでシェルコマンドを実行できる場合は、適切な引数を指定してtar
を実行し、ファイルを含む.tar
(または.tar.gz
)アーカイブを作成してから、 curl
またはwget
を実行して、アーカイブを https://transfer.sh/ にアップロードできます。別のコンピューターからアーカイブを取得できます。
サーバーでシェルコマンドを実行できない場合は、サーバーのsysadminまたはDBAにコマンドの実行方法を尋ねる必要があります。 (サーバーは重要なデータベースを実行しているため、メンテナンスタスクを実行する方法が必要であるとおっしゃいました。)
.php
ファイルをアップロードして実行(つまり、Webページを提供)できる場合は、ディレクトリツリーを公開するadmin .php
スクリプトを見つけてアップロードし、実行することができます。
別のホストから、次の手順を実行します。
dd if=/dev/zero of=some-file.img bs=1k count=1000
mkfs.fat some-file.img
デスクトップ上のファイルsome-file.imgを取得します。 VMwareクライアントは、フロッピードライブとしてマウントできる必要があります。
count=1000
あなたのニーズに合うように。データストアに新しいVmdkを作成します。実行時にVMにアタッチし、VMで検出し、パーティションを作成し、ファイルシステムを作成し、マウントポイントにマウントしてから、データをコピーします。完了したら、マウントを解除し、Vmdkを切断してから、ssh/sftp/nfsにアクセスできるVM)に接続します。次に、必要に応じて検出、マウント、コピーします。