2010년 12월 25일 토요일

리눅스에서 네트워크를 통한 파일 복사 방법

Pushing 방식의 복사
(localhost --> remotehost로 파일 보내기. localhost에서 오퍼레이션)

  • tar + ssh
    ## remotehost의 특정 지정된 디렉토리(REMOTEDIR)로 복사
    tar zcvf - LOCALDIR1 LOCALDIR2 | ssh user1@remotehost 'cd REMOTEDIR; tar zxvf - '

    ## remotehost의 특정 지정된 디렉토리로 압축 해제되지 않은 상태로 복사
    tar zcvf - LOCALDIR1 LOCALDIR2 | ssh user1@remotehost "cat > /REMOTEDIR/REMOTEFILE.tar.gz"

  • scp
    ## LOCALDIR의 내용(디렉토리 자체는 제외)만 복사
    scp -rp LOCALDIR user1@remotehost:/home/user1/REMOTEDIR

  • rsync + ssh
    ## localhost에서 localhost의 LOCALDIR을 remotehost의 REMOTEDIR로 복사
    rsync -avzH -e ssh --progress /LOCALDIR user1@remotehost:/REMOTEDIR

    ## localhost에서 localhost의 LOCALDIR 디렉토리의 내용만(디렉토리 자체는 제외) remotehost의 REMOTEDIR로 복사
    rsync -avzH -e ssh --progress /LOCALDIR/ user1@remotehost:/REMOTEDIR


Pulling 방식의 복사
(remotehost --> localhost로 파일 가져오기. localhost에서 오퍼레이션)

  • tar + ssh
    ## remotehost의 REMOTEDIR1 과 REMOTEDIR2 를 localhost의 localhost의 LOCALDIR로 복사
    ssh remotehost "( cd REMOTE_ABS_DIR ; tar zcvf - REMOTEDIR1 REMOTEDIR2 ) " | tar zxvf -

  • scp
    ## remotehost의 REMOTEDIR의 내용(디렉토리 자체는 제외)만 localhost의 LOCALDIR로 복사
    scp -rp user1@remotehost:/home/user1/REMOTEDIR LOCALDIR

  • rsync + ssh
    ## localhost에서 remotehost의 REMOTEDIR 디렉토리의 내용만(디렉토리 자체는 제외) localhost의 LOCALDIR로 복사
    rsync -avzH -e ssh --progress user1@remotehost:/REMOTEDIR /LOCALDIR


Server & Client 방식의 복사
(localhost --> remotehost 로 파일 복사. localhost와 remotehost에서 오퍼레이션 필요)
  • Netcat + tar
    ## 파일 수신 장비 (Netcat Server)
    [root@remotehost]$ cd REMOTEDIR
    [root@remotehost]$ nc -l 9999 | tar zxvf -

    ## 파일 전송 장비 (Netcat Client ,  -v : 상세한 처리 및 오류 내용 출력, -n : Domain lookup 안 하도록 설정)
    [root@localhost]$ cd LOCALDIR
    [root@localhost]$ tar cvzf - * | nc -n -v remotehost 9999
  • 혹시, nc 사용에 문제가 있다면, 서버쪽에서 기동시에 -p 옵션 추가해 볼 것 
  • -> 52G Netcat + Tar : 40분 소요
  • -> 14G Netcat + Tar : 12분 소요  

댓글 없음:

댓글 쓰기