LabHub

SSH 와 파일 전송 · scp, rsync, sftp 로 파일 옮기기 · 실습

scp 와 sftp 로 파일 옮기기

LabHub 에서 이어서 보기

목표

scp 와 sftp 로 파일을 올리고 내리고, 타임스탬프를 보존하고, 체크섬으로 무결성을 확인합니다.

왜 중요한가

전송이 "끝났다" 는 것과 "제대로 갔다" 는 것은 다른 말입니다. 실무에서는 항상 체크섬으로 확인합니다. 그리고 scp 의 포트 옵션이 대문자 -P 라는 사실은 사소해 보이지만, ssh 는 소문자가 포트라서 실제로 자주 틀립니다. 소문자 -p 는 타임스탬프 보존이라 조용히 다른 일을 하고 넘어갑니다. sftp 배치 모드는 파트너사와의 파일 교환 자동화에서 여전히 표준적으로 쓰입니다.

이 실습에서 127.0.0.1:2222다른 서버라고 생각하세요. 앞 실습에서 만든 /root/.ssh/id_labhub 키를 그대로 씁니다.

단계

1. /root/xfer/src 디렉터리를 만들고 그 안에 a.txt(1KB 이상), b.txt(1KB 이상), c.bin(10KB 이상) 세 파일을 만드세요.
2. 원격의 /root/xfer/dst/ 디렉터리를 만들고 a.txt 를 그리로 올리세요.
3. /root/xfer/src 디렉터리 전체를 원격의 /root/xfer/tree/ 아래로 재귀 복사하세요. 결과적으로 /root/xfer/tree/src/b.txt 가 존재해야 합니다.
4. 원격의 /root/xfer/dst/a.txt 를 로컬 /root/xfer/back/ 으로 내려받으세요.
5. /root/xfer/batch.txt 에 sftp 배치 명령을 적고 실행하세요. 배치는 /root/xfer/src/c.bin 을 원격 /root/xfer/dst/ 로 올려야 합니다. 실행 로그를 /root/xfer/sftp.log 로 저장하세요.
6. b.txt타임스탬프를 보존한 채 원격 /root/xfer/dst/ 로 복사하고, 원본과 사본의 mtime(초 단위)을 각각 한 줄씩 /root/xfer/mtime.txt 에 적으세요. 두 값이 같아야 합니다.
7. /root/xfer/src 의 세 파일에 대한 sha256 매니페스트를 만들고, /root/xfer/dst/root/xfer/tree/src 에 도착한 파일들의 해시가 일치하는지 검증해 결과를 /root/xfer/verify.txt 로 저장하세요.
8. /root/xfer/notes.txt 를 다음 3줄로 만드세요.
SCP_PORT_FLAG=-P / SSH_PORT_FLAG=-p / SCP_PRESERVE_FLAG=-p

참고

단계 8개

  1. 전송할 파일 준비
  2. 파일 올리기
  3. 디렉터리 통째로 올리기
  4. 내려받기
  5. sftp 배치 실행
  6. 타임스탬프 보존
  7. 무결성 검증
  8. 옵션 정리 노트