scp
はすべての場合にうまく機能しますが、Raspberry Piは安全な環境(lan)でファイルを効率的にコピーするのに弱くなります。 54 MbitワイヤレスLANを介して理論的に可能な6,75 MB/sは、約1.1 MB/sに縮小されます。
暗号化せずにリモートでファイルをコピーする方法はありますか?
これは、追加のサービス(ftp、samba)に依存しないcliコマンドであるか、少なくとも最小限の構成である必要があります。つまり、標準のプログラム/サービス(scp/sshなど)ですぐに使用できる標準ツールです。
あなたはrcp
を探しているかもしれません、それはrsh
を介してリモート実行を実行するので、それに依存する必要があり、すべての通信が安全でないことを覚えておいてください。
Ssh/scpで暗号化を完全に無効にすることはできませんが、CPUの負荷がはるかに少ない弱い暗号を使用するように強制することができます。 ssh_configまたはコマンドラインで圧縮がオンになっていないことを確認し、scpコマンドラインに-c arcfour,blowfish-cbc
を追加して、より弱い暗号を選択します。
私はこの簡単なスクリプトを書きました:
#!/bin/bash
ssh "$1" "nc -l 2020 > \"$2\" &"
pv "$2" | nc "$1" 2020
それは2つの引数をとります。それを送信するホストと送信するファイルです。 1つのファイルに対してのみ機能します。 sshを使用して反対側でnetcat
リスニングを開始し、次にnetcat
を使用してそのリスニングポートに送信します。最初にpv
を追加して、Niceプログレスバーを表示しました。必要がない場合は、pv
をcat
に置き換えます。 2020ポートを好きなように変更します。これには、リモートシステムへのsshアクセスが必要です。
これは完全に安全ではありませんが、それがあなたが望んでいたことです。
NFSは、この種のタスクではかなり過小評価されていると思います。この場合、利便性、速度が求められ、セキュリティは気になりません。 NFSは、特にクライアントでの設定が非常に簡単です。 このubuntuコミュニティのヘルプページ とともに、 buntuのこの短いガイド を参照してください。クライアントの観点からは、サーバーディレクトリをマウントするだけで、ローカルドライブのように見え、cp
またはrsync
または必要なコマンドを使用できます。
HPC(High Performance Computing)のopensshには、転送ウィンドウサイズを増やして暗号化を無効にすることでsshスループットを向上させるパッチがあります。再コンパイルしても構わない場合は(おそらくフォワードポーティングパッチ)、チェック HPN-SSH 。 BowlOfRedがコメントで気づいたように、パッチはbothクライアントandサーバーで使用する必要があります。
また、rsync
-を1台のマシンでデーモンとして使用し、もう1台のマシンで単純なクライアントとして使用することもできます。クライアントとサーバー間で異なるファイルの部分のみを転送できるため、ファイルの読み取り(およびチェックサム)よりも遅いネットワークリンクを介して大容量のボリュームを同期する場合に特に便利です。詳細については、rsync(1)
およびrsyncd.conf(5)
のマニュアルページを参照してください。
ベンコリンズによる上記のbashスクリプトは良い解決策ですが、サーバー側のポートの-p
フラグがありません。そのまま実行すると、何もしない空のファイルまたはサーバーがハングします。
コマンドを見ただけで、これが何をしているかがわかりやすくなります。
DestinationShell# nc -l -p 2020 > file.txt
SourceShell# cat file.txt | nc dest.ip.address 2020
nc
またはnetcatは、出力がTCP接続を介して別のマシンにエコーされることを除いて、catと同じです。サーバー上のncの出力を同じ方法でDestinationを設定し、echo foo | nc dest.ip.address 2020
を実行し、ncを使用して他のあらゆることを実行できます。
前回のアップデートからしばらく経ち、暗号がいくつか変更されました。少なくともfreeBSDでは、blowfishはもう利用できません。現在のsshインストールで見つけた最速の暗号は-c aes128-cbcです。
楽しい。
ファイル構造全体を転送する場合は、tarを使用します。
受信システム:
[]# nc -l 2020 | tar xvf -
次に、送信システムで:
[]# tar cvf - | nc dst.hostname.net 2020
1つのシステムでファイルのアーカイブを監視し、もう1つのシステムで抽出します;)