2013-03-08 2 views
1

죄송합니다. 너무 간단한 질문입니다. 하지만 나는 자바 개발자이며 쉘 스크립팅에 대해서는 전혀 모른다. 나는 봤지만, 내가 찾고있는 것을 정확히 찾을 수 없었다.원격 서버에서 로컬 서버로의 SFTP 파일

내 요구 사항 [술집/PRI 키를 기준으로 인증] SFTP를 사용하여 원격 서버에

  1. 에 연결합니다. 개인 키 파일을 가리키는 변수
  2. 로컬 서버 폴더에 특정 확장자 [.log]가있는 파일을 전송합니다. 원격 서버 경로를 설정하는 변수와 로컬 폴더
  3. 어느 한이 나에게 쉘 스크립트를 줄 수 .txt 파일

에 원격 서버에

  • 로그인 모든 전송 된 파일을 전송 된 파일의 이름을 변경?

    이것은 지금까지 제안에서 벗어난 것입니다. 내 옆에 남아 여전히 몇 가지 질문)

    export PRIVKEY=${private_key_path} 
    export [email protected] 
    export RMTDIR=/logs/*.log 
    export LOCDIR=/downloaded/logs/ 
    export LOG=sucess.txt 
    
    scp -i $PRIVKEY $RMTHOST:$RMTDIR $LOCDIR 
    for i in 'ls -1 $LOCDIR/*.log' 
    do 
        echo $i >> $LOG 
    done 
    
    ssh $RMTHOST -c "for i in `ls -1 $RMTDIR; do mv /logs/$i /logs/$i.transferred; done" 
    
  • 답변

    1

    무엇을이 방법에 대해?

    1. 연결 [팝/PRI 키에 기초하여 인증] SFTP를 사용하여 원격 서버. 개인 키 파일을 가리키는 변수
    2. [.log]가 확장 된 파일을 로컬 서버 폴더로 전송합니다. 변수는 .txt 파일
    for i in `ls -1 /your/local/dir/*.log` 
    do 
        echo $i >> $your_txt 
    done 
    
    1. 이름 바꾸기 원격 서버 경로 및 로컬 폴더
    scp [email protected]:/dir/of/file/*.log /your/local/dir 
    
    1. 로그인 모든 전송 된 파일을 설정합니다 그
    ssh [email protected] -c "for i in `ls -1 /dir/of/file/*.log; do mv /dir/of/file/$i /dir/of/file/new_name_based_on$i; done" 
    
    +0

    전체 스크립트 파일로 추가/작성 해주십시오. ls 및 chmod [기본 명령]을 제외하고는 리눅스 스크립팅에 대해 알지 못합니다. – Reddy

    +0

    파일 전송이 실패하면 for 조건에서 어떻게 알 수 있습니까? – Reddy

    +0

    스크립트 파일에 관해서는, 내가 지시 한 부분을 결합하는 문제가 될 것입니다. 먼저 시도한 다음 구체적인 질문으로 돌아가십시오. – fedorqui

    1

    사용 SCP (보안 복사) 파일을 전송하는 명령. 파일을 압축하는 -C 스위치를 추가 할 수도 있습니다. 그것은 조금 더 빠르게 할 수 있습니다. 즉

    서버 1에서 서버 2에 서버 1에서 파일 1을 복사

     
    #!/bin/sh 
    scp -C /home/user/file1 [email protected]:/home/user 
    

    편집 :

     
    #!/bin/sh 
    scp -i {path/to/pub/pri/key/file} /home/user/file1 [email protected]:/home/user 
    
    +0

    원격 서버에서 전송 된 파일이 열려하기 위해, 내가 쉘 스크립트에 대한 생각이 없습니다. 자바 개발자로서 현재 프로젝트에서 나는이 상황을 가지고 도움을 구한다 : – Reddy

    +0

    이'scp -C/home/user/file1 root @ server2.com :/home/user'는 파일을 원격 서버로 안전하게 전송하기 위해 쉘 콘솔에 입력해야하는 명령입니다. 'scp '는 SSH를 기반으로하기 때문에 자신을 인증해야합니다. – KiaMorot

    +0

    올바른, 인증이 필요합니다. – Tsimtsum

    관련 문제