현재 사용 중인 컴퓨터의 외장 하드 드라이브와 동일한 네트워크에 있는 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
모든 명령은 루트로 실행해야 합니다. OpenBSD netcat은 귀하의 버전(LibreSSL에 있음)으로 간주되지만 nc
다른 버전도 작동해야 합니다.
답변2
명령줄을 변경하지 않고 몇 가지 간단한 해결 방법:
ssh-agent
SSH에 대한 비밀번호 인증 대신 키 인증(키 파일이 비밀번호로 보호된 경우)을 사용하십시오 . 어쨌든, 그것은 일반적으로 좋은 생각입니다.- SSH를 사용한 연결 재사용은 먼저 연결(예:
ssh -o ControlMaster=yes -M -f sleep 999999
)을 연 다음 인증이 필요하지 않은 슬레이브 연결에서 복사본을 실행합니다. 바라보다SSH 명령에 대한 지침 보기예를 들어. sudo true
이 명령을 실행하기 전에 실행하세요. 기본적으로 sudo는 비밀번호를 확인하기 위해 15분 동안 정보를 캐시합니다(적어도 구성에 따라 동일한 터미널에서 이 작업을 수행하는 경우).
비정상적으로 엄격한 구성으로 인해 명령에 두 개의 암호를 입력해야 하는 경우 명명된 파이프를 사용하여 명령을 구분할 수 있습니다.
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
또는 다음 두 단계로 임시 파일을 사용합니다.
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가 이에 대한 훌륭한 답변을 제공합니다.
비밀번호 프롬프트를 제거하는 가장 쉬운 방법은 이 모든 작업을 루트로 수행하는 것입니다( 루트 쉘을 얻기 위해). 따라서 각 명령 앞에 를 추가하고 SSH 키를 설치하기 위해 루트로 실행할 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를 실행하는 경우 루트 키의 비밀번호를 최대 한 번만 입력하면 됩니다(또는 이전에 사용한 적이 있는 경우에는 전혀 입력하지 않아도 됩니다).