問題タブ [scp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - リモートサーバー上のディレクトリにある最新のファイルをscpするためのBashスクリプト
わかりました。findthencpコマンドを使用してローカルでこれを行う方法は知っていますが、scpを使用してリモートで同じことを行う方法はわかりません。
だからこれを知っている:
そのターゲットディレクトリはデータベースバックアップでいっぱいになりますが、最新のバックアップを見つけてローカルでscpするように指示するにはどうすればよいですか?
php - PHPexecコマンドとscpを使用してコピーします
SCPを使用してリモートからローカルシステムにzipファイルをコピーしたい。php関数exec()を使用するphpファイルがあります。http://www.abc.com/upload.phpのようにupload.phpを実行した場合。zipファイルをローカルのLinuxフォルダーにコピーする必要があります。パスは/var/ www / html / mydirectory /です。これを行うにはどうすればよいですか?
iphone - iPhoneのsftpサーバーからファイルをダウンロード/アップロードする
sftp / scpサーバーに接続してファイルをダウンロードし、編集してから再アップロードする必要があります。
私の知る限り、SKD自体はftp経由で安全に接続する機能を提供していません。
何か案は?
python - Python:パスワードが機能しない場合はscp、stdinを実行します
私は次のことを試みています
しかし、私はまだパスワードpromtを取得し、パスワードは送信されません。キーでscpを使用できることは知っていますが、これは私が必要としているものではありません。
何か助けはありますか?
ruby - Ruby および Net::SCP 転送 (ソケット) のパフォーマンスの問題
SCP のアップロード速度は、コマンド ラインの scp ユーティリティでできることから、ライブラリでは大幅に制限されているようです。これが Ruby (1.9.2-p0) であることは理解していますが、Net::SCP は Linux ユーティリティよりも約 8 倍遅くなります (大きなファイルを使用すると表示されます... 以下を参照)。これが Ruby のソケットの仕組みなのか、それとも Net::SCP ソケットをより適切に多重化できるのか知りたいです (コードをざっと見てみました)。
私が試したアップロードのスタイル (シリアル アップロード、非同期で動作するチャネル、scp オブジェクトの複数のインスタンスを使用) に関係なく、SCP アップロードで 9 メガバイト/秒を超える転送速度を達成できないことに気付きました。では、私の調査の詳細を説明しましょう。
1) さまざまな暗号化アルゴリズムを試した
速度を大幅に変更することなく、さまざまな種類の暗号化を使用しました。例: コマンド ライン scp (暗号化アルゴリズム = arcfour128) を使用して 1GB のテスト ファイルを送信し、内部ギガビット接続で 73.3 メガバイト/秒の転送速度を得ることができました。Net::SCP.upload ライブラリを使用して、内部ギガビット接続で約 9 メガバイト/秒を超えることはありませんでした。
2) 異なるホスト/OS を試した
Linux -> Linux アップロードが最速であることがわかりました。SUA の ssh サーバー (Windows) は最大 13.5 メガバイト/秒のアップロード速度しか提供できませんでしたが (Linux -> Windows、scp コマンド ラインで arcfour アルゴリズムを使用)、Linux -> Linux (scp コマンド ラインで arcfour を使用) ) は驚異的な 73.3 メガバイト/秒でした。これらの Windows マシンと Linux マシンは、モデル、ハードウェアなどはまったく同じです。
3) さまざまな SCP アップロード方法を試した
-> 2つの同期アップロードを使用! コール、次々と終了しました。-> 2 つの非同期アップロード呼び出しを使用し、次々に開始された -> 2 つの Net::SCP オブジェクトを使用し、ファイルをアップロードの非ブロッキング/非同期バージョンに送信した (したがって、それらは並行して実行されていた) これらの異なる方法のどれもパフォーマンスが大幅に向上しますが、これは苛立たしいことです。
テストの結果は次のとおりです (テキストは読みやすくするために強化されていますが、提供されたコードの出力に似ています)。
ファイルが大きい場合 (私は ~1GB のファイルを使用しました)、これらの rspec テスト (scp_spec.rb 内) を使用するか、使い慣れたテスト ハーネスに変更して、このパフォーマンスの低下を確認できます。
ライブラリでこのパフォーマンスを改善する方法がわからない場合は、サブシェル経由で scp ユーティリティを呼び出すだけでなく、SCP 転送の並列速度をさらに向上させる方法について何かアイデアはありますか?
Rspec テストはこちら: https://gist.github.com/703966
linux - Linux: 未完成のファイルのアップロード - ファイル サイズ チェックあり (scp/rsync)
私は通常、次のような状況に陥ります。たとえば、カメラから 650 MB の MPEG-2 .avi ビデオ ファイルがあります。次に、ffmpeg2theoraを使用して、サイズが約 150 MB の Theora .ogv ビデオ ファイルに変換します。最後に、この .ogv ファイルをssh
サーバーにアップロードします。
たとえば、ffmpeg2theora
私の PC では、エンコード プロセスに 15 分ほどかかります。一方、アップロードは約 60 KB/秒の速度で進行し、約 45 分かかります (150MB .ogv の場合)。したがって、最初にエンコードし、エンコードプロセスが完了するのを待ってからアップロードすると、約時間がかかります
操作を完了します。
ということで、エンコード作業と並行してなんとかアップロードを開始できたらいいなと思いました。次に、原則として - アップロード プロセスは (転送されたバイト/秒に関して) エンコーディング プロセス (生成されたバイト/秒に関して) よりも遅いため、アップロード プロセスは常にエンコーディング プロセスよりも「遅れる」ため、操作全体 (enc+upl) はわずか 45 分で完了します (つまり、アップロード プロセスの時間 +/- ワイヤ上の実際のアップロード速度の状況に応じて数分)。
私の最初のアイデアは、(.ogv のローカル コピーを保持するために) の出力をパイプしてから、次のように - にさらに出力をパイプすることでしffmpeg2theora
た。tee
ssh
このコマンドは確かに機能しますが、ターミナルの実行ログで簡単に確認できますffmpeg2theora
。この場合、ffmpeg2theora
完了の予測時間は 1 時間と計算されます。つまり、enc+upl の両方の完了時間が短縮されるという点では、メリットがないように思われます。(これはネットワークの輻輳が原因である可能性があり、その時点でネットワーク速度が低下している可能性がありますが、パイプを介して送信されるデータの小さなチャンクごとに確認応答を待つ必要があるように思われます。ffmpeg2theora
その ACK は最終的にどこから来なければなりssh
ません...そうでなければ、ffmpeg2theora
完了時間の見積もりを提供できなかったでしょう。繰り返しになりますが、見積もりが間違っている可能性がありますが、操作は実際には 45 分で完了します。推定で1時間で腹を立てて、Ctrl-Cを押します;)...)
私の2 番目の試みは、1 つの端末ウィンドウでエンコード プロセスを実行することでした。
...、および別の端末ウィンドウで を使用したアップロード プロセスscp
(これにより、「強制」「並列化」):
scp
ここでの問題は次のとおりです。たとえば、が起動した時点で、ffmpeg2theora
既に 5 MB の出力 .ogv ファイルがエンコードされているとしましょう。この時点で、scp
この 5 MB をファイル サイズ全体として認識し、アップロードを開始します。5 MB マークに到達すると終了します。その間に、ffmpeg2theora
追加の 15 MB が生成され、.ogv ファイルが終了した時点で合計サイズが 20 MB になる可能性がありますscp
(最初の 5 MB の転送が終了します)。
次に、次のように、部分的に完了したアップロードの「再開」をサポートする( joen.dk » Tip: scp Resume ) ことを学びました。rsync
...、ということrsync
で - の代わりに使ってみたのですが、ファイルサイズに関してはscp
まったく同じように動作するようです。つまり、プロセスの最初に読み取ったファイルサイズまでしか転送されず、その後はscp
出口。
それで、コミュニティへの私の質問は次のとおりです。総処理時間を短縮するために、エンコードとアップロードのプロセスを並列化する方法はありますか?
次のように、いくつかの方法があると思います。
scp
ファイルサイズを強制的に/継続的にチェックするコマンドラインオプション(私は見ていません)rsync
-ファイルが別のプロセスによって書き込み用に開かれている場合(別のターミナルウィンドウでアップロードを実行するだけです)- bash スクリプト。.ogvファイルが別のプロセスによって書き込みのために開かれている限り実行
rsync --partial
されるループで実行すると言います(実行するたびに再開ポイントのハードディスクスキャンを聞くことができるので、実際にはこのソリューションは好きではありません-これ、私は、同じファイルが同時に書き込まれていることがわかっている場合、良いとは言えません)while
rsync --partial
- 「現在生成されている」/「未完成」ファイルのアップロードをサポートする別のツール (
scp
/以外) (増加するファイルのみを処理できるという仮定; ローカルファイルのサイズが突然小さいことに遭遇すると終了します)すでに転送されたバイト)rsync
...しかし、私が何かを見落としている可能性もあります-そして、1時間はそれが得られるのと同じくらい良いです(言い換えれば、並列化しようとしても、合計45分の時間を達成することはおそらく論理的に不可能です) :)
うまくいけば、これを明確にしてくれるコメントを楽しみにしています;)
前もってありがとう、
乾杯!
perl - リモート サーバー (scp) でアカウントなしで安全にアップロード
特定のスクリプトを作成する方法を探しています。
- イメージを $HOME/images/scan にスキャンする (Linux) ユーザー A、B、および C がいます。
- それらの写真を、アカウントを持たないリモート サーバーにアップロードする必要があります。
- したがって、仮想ユーザー X は、ローカルおよびリモート マシンにアカウントを持っていますが、ユーザーのホーム ディレクトリに直接アクセスすることはできません。
- それらはすべて共通のグループ「画像」を持ち、ユーザーのスキャンディレクトリはこのグループで読み取り可能です。
だから私は方法を見つけたいと思っています.X権限とリモートサーバーのアカウントを使用して、ユーザーが写真をリモートサーバーにアップロードするスクリプトを実行する方法を見つけたいと思います. そのための rsa-key を作成し、リモート サーバーの認証済みキー ファイルに追加します。ユーザー X の場合、すべてが機能します。
私はいくつかの setgid/setuid perl スクリプトを試しましたが、それらはユーザー X 権限で scp を実行できず、rsa-key も使用しません。この例のようなもの:
だから私は自分のニーズを満たす他の方法を探しています。
前もって感謝します!
コイケ ヘッド、
WK
php - PHP ssh2_scp_send ファイルのパーミッション
PHP関数ssh2_scp_send
を使用して、あるサーバーから別のサーバーにファイルを転送しています。興味深いのは、許可を 8 進形式 (つまり 0644) で直接記述した場合、すべてが正常に機能することです。代わりにこれを逆コンマで囲むか、バリアベルを使用すると、これは機能しなくなります。
より明確にするために:これは機能します:ssh2_scp_send($conn, $localFile, $remoteFile, 0644);
動作しません:ssh2_scp_send($conn, $localFile, $remoteFile, "0644");
動作しません:$permission=0644;ssh2_scp_send($conn, $localFile, $remoteFile, $permission);
なぜこれが事実なのか、誰にも分かりますか?
ssh - 複数のファイアウォールの背後にあるリモートサーバーにSSHで接続するにはどうすればよいですか?
これが私の状況です
- 自宅のラップトップからssh経由でサーバーAにアクセスできました。
- サーバーBには、サーバーAからssh経由でのみアクセスできます。
- サーバーCには、サーバーBからssh経由でのみアクセスできます。
とにかく、ラップトップからサーバーCに直接sshできるように、.ssh / configを構成できますか?サーバーCからラップトップにファイルを定期的に転送する必要があるため、これが必要です。私は「scp」を使用していますが、このssh階層を手動で確認するのは面倒です。sshの魔法を使ってこれを行うもっと簡単な方法があるかどうか疑問に思います。
linux - SSH 経由で接続されたコンピューターから VPS にファイルを移動する方法は?
サーバー間でファイルを移動するために scp が頻繁に使用されることは知っていますが、自分のコンピューターをサーバーとして参照する方法がわかりません。scp がこれを行うための正しいコマンドである場合、何が欠けていますか?