2014-06-13 3 views
0

로컬 컴퓨터에서 원격 컴퓨터의 HDFS로 많은 양의 파일을 전송하는 스크립트가 있습니다. 스크립트에서는이 같은 ssh 사용이후의 명령에 대해 여러 SSH 연결을 유지하십시오.

cat localfile | ssh [email protected] 'hadoop fs -put - path-to-target-file' 

나는 전송할 파일을 많이 가지고 있고, 각 전송 전에 각 전송에 따라서, 이미 같은 이름의 대상 파일이 존재하는지 여부를 확인해야하기 때문에 두 개의 ssh 명령을 사용해야합니다 (존재 확인). SSH 연결을 설정하는 것은 시간 소모적이기 때문에 SSH 연결을 유지하는 방법이 있는지 궁금해합니다. 첫 번째 연결이 성공한 후 다른 ssh 명령은 새 연결을 설정하려고 시도하지 않고 이전 연결을 직접 사용하려고 시도합니다.

또한 업로드를 위해 여러 프로세스를 사용했습니다. 여러 개의 다른 연결을 유지할 수 있습니까? 예를 들어 4 개의 프로세스를 사용하는 경우 4 개의 다른 연결을 동시에 유지할 수 있습니까?

감사합니다.

+0

'scp'와'rsync'는 친구입니다! – marekful

답변

1

Hadoop에서는 작동하지 않을 수 있습니다. 잘 모르겠습니다. sftp 세션 스크립팅을 고려하십시오. mput file*은 최고입니다. 관련

: 살아있는 현재 세션을 유지하려면, 이것은 당신의 ~/.ssh/config에 편리합니다 : 당신으로 인해 활동에 연결 손실을 방지하기 위해 서버에 작업을 보낼 수

ServerAliveInterval 300 
ServerAliveCountMax 60 
0

. 이것은 ~/스푸핑/설정 '초'노 연산 코드를 전송하기 전에 시간 (초)입니다

Host * 
    ServerAliveInterval <seconds> 

에 다음과 같은 줄을 추가하여 수행 할 수 있습니다.

1

처음에는 잘못된 접근 방식입니다. 첫째, SSH가 ssh [email protected] "command"과 같이 원격 서버에서 실행되도록 명령을 전달하면 명령 실행 후 이됩니다.

sftp, scp 또는 rsync을 사용해야합니다. 후자는 원격 버전을 확인하고 다양한 조건에 따라 대상을 덮어 쓸지 여부를 제어하고 한 연결 내에서 많은 파일 작업을 실행해야하는 필요성을 충족시킵니다. Rsync 웹 사이트를 확인하십시오.

+0

감사합니다. 'Rsync' 사용을 고려했는데, 원격 로컬 파일 시스템으로 전송하고 싶다면 정말 대단합니다. 하지만 나중에 명령을 실행할 수 없기 때문에'ssh'로 돌아갔습니다 (제 경우에는 파일을 HDFS에 넣으십시오). 아니면 뭔가 빠졌어, 내가 틀렸다면 나를 바로 잡아라. – Rainfield

관련 문제