세 명의 사용자가 있는 서버 A가 있습니다. 폴더의 70GB 콘텐츠를 서버 B로 다운로드해야 합니다. 서버의 공간은 90GB밖에 되지 않아 압축해서 전송할 수 없습니다. 내 경험상 rsync
다른 방법보다 10배나 느릴 정도로 매우 느립니다.
나는 항상 사용
ssh user@ip "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
이 명령은 파이프를 열고 원하는 모든 것을 최대 속도로 직접 다운로드하기 때문에 놀랍습니다. rsync와 같은 작은 파일에서는 속도가 느려지지 않습니다. 저는 물건을 빠르게 전송하는 데 사용하는데 속도가 너무 빨라서 100mbps 업로드 속도가 병목 현상을 일으키게 됩니다.
어쨌든 서버 A에는 내가 로그인한 사용자가 있고 sudo -i도 있고 마지막으로 마인크래프트 사용자 파일이 실제로 아래에 있습니다. 이 사용자는 실제 사용자가 아니며 보안 목적을 위한 파일 자리 표시자일 뿐입니다. 이 사용자로 로그인할 수 없습니다.
그래서 제가 해야 할 일은 서버 B에서 서버 A로 ssh를 실행하고 명령을 사용하여 루트로 sudo를 실행하고 루트 비밀번호를 제공한 다음 평소대로 수행하는 것이었습니다.
ssh user@ip "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
도와주세요, 전능하신 컴퓨터 전문가님.
답변1
비대화형 모드에서는 tty 장치가 자동으로 할당되지 않기 sudo: no tty present
때문에 오류 메시지가 나타납니다 . ssh
즉, 원격 시스템에서 실행할 명령을 지정했습니다.
이 옵션을 사용하면 ssh가 tty 장치를 할당하도록 강제할 수 있습니다 -t
.
ssh -t user@ip "sudo tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
답변2
내부적으로 ssh 명령을 사용할 수 있습니다 sudo
. sudo 비밀번호 프롬프트의 경우 스위치를 사용하여 일반 텍스트로 비밀번호를 전달할 수 있습니다 -S
.
ssh user@ip "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
또 다른 방법은 을 사용하는 것입니다 expect
.