現在使用しているコンピュータの外付けハードドライブと同じネットワーク上のRaspberry Piのハードドライブを複製しようとしています。しかし、コマンドを正しく送信するのに問題があります。私は試した:
ssh user@hostip "dd if=/dev/sda" | sudo dd of=/dev/sdc
ただし、sudo と ssh 接続のプロンプトは一緒にスタックします。
答え1
netcatを使用してください - プライバシーを気にしない場合(つまり、ホームネットワークが実際にあなたのものである場合)、CPUに不要な負荷は発生しません。
ホストで実行
cat /dev/sda | nc -n ipaddr 10000
ipaddr
PIのIPアドレスはどこにありますか?
PIで実行
nc -l 10000 >/dev/sdc
すべてのコマンドはrootとして実行する必要があります。 OpenBSD netcatはあなたのバージョン(LibreSSLにある)と見なされますが、nc
他のバージョンも動作するはずです。
答え2
コマンドラインを変更せずにいくつかの簡単な回避策:
ssh-agent
SSHのパスワード認証ではなく、キー認証(キーファイルがパスワードで保護されている場合)を使用してください。とにかく、それは一般的に良い考えです。- SSHを使用した接続の再利用は、まず接続(たとえば
ssh -o ControlMaster=yes -M -f sleep 999999
)を開き、次に認証を必要としないスレーブ接続でコピーを実行します。バラよりSSHコマンドの指示を見る例えば。 sudo true
このコマンドを実行する前に実行してください。デフォルトでは、sudoはパスワードを確認するために15分間情報をキャッシュします(少なくとも設定に従って同じ端末でこれを行う場合)。
異常に厳しい構成のためにコマンドに2つのパスワードを入力する必要がある場合は、名前付きパイプを使用してコマンドを区別できます。
mkfifo pipe
ssh user@hostip cat /dev/sda >pipe
# and in another terminal
sudo sh -c 'cat >/dev/sdc' <pipe
答え3
リモートディスク全体のビット単位のコピーは本当に必要ですか?デジタルフォレンジックが好きですか?
それ以外の場合は、パーティションのコピーとそのパーティションのデータのみが必要な場合は、次の方法で大量の時間と転送帯域幅を節約できます。
- たとえば、を使用してパーティションテーブルをコピーします
sfdisk
。
たとえば、
ssh user@hostip sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdc
または、次の2つの手順で一時ファイルを使用します。
ssh user@hostip sudo sfdisk -d /dev/sda > /tmp/sda.txt
sudo sfdisk /dev/sdc < /tmp/sda.txt
partclone
空き領域、削除されたファイルなどをすべて無視し、現在使用中のファイルシステム部分のみを複製するために使用されます。
たとえば、
ssh user@hostip sudo partclone.ext4 -c -s /dev/sda1 -o - |
sudo partclone.ext4 -r -s - -o /dev/sdc1
partclone
Linux(ext2/3/4、btrfs、xfsなど)およびWindows(NTFS、FAT)で使用されるすべての共通ファイルシステム、および一部の非一般的なファイルシステムをサポートします。
部分クローンDebianを含むほとんどのディストリビューションにパッケージされています。 sfdisk
パッケージの一部ですutil-linux
。
それでもssh / sudoの問題を解決する必要がありますが、@Gillesはこれに素晴らしい答えを提供します。
パスワードプロンプトを削除する最も簡単な方法は、これをすべてrootとして実行することです(ルートシェルを取得するため)。したがって、各コマンドの前に追加してSSHキーをインストールするためにrootとして実行するsudo -i
必要はありません。ホストシステムのroot@localhost。その後、次を実行できます。sudo
ssh-copy-id hostip
~/.ssh/authorized_keys
ssh hostip sfdisk -d /dev/sda | sfdisk /dev/sdc
ssh hostip partclone.ext4 -c -s /dev/sda1 -o - |
partclone.ext4 -r -s - -o /dev/sdc1
ssh-agentを実行している場合は、ルートキーのパスワードを最大1回入力するだけです(または以前に使用したことがある場合はまったく入力する必要はありません)。