scp -i <key_pem> -r <local_path> <remote_user_name>@<remote_public_dns>:<remote_path>
폴더를 보내기 위해 중간에 -r 옵션 추가
이렇게 했을 때 결과
위의 터미널은 EC2에 ssh로 접속한 창
아래에서 scp 실행중
속도는 별로 빠르지 않은 것 같다.
겨우 500MB를 전송하는 데에도 시간이 제법 걸린다.
scp 명령어에서 IP를 바로 쓰지 않고 DNS를 쓰면 느릴 수 있다고 해서 IP로도 써 봤는데 DNS보다는 빠른 것 같지만 초당 최대 1MB 정도의 속도밖에 나오지 않았다. (574MB 전송에 실제로 걸린 시간은 14분)
SCP 통신 자체는 속도 제한이 안 걸려 있어서 속도 제한을 위해서 옵션을 쓰기도 하는데, EC2 자체에서 제한하고 있는 걸까?
프로젝트 중에 대용량 파일을 전송할 방법이 없다면(ubuntu 22.04에서 다운로드를 공식 지원하지 않는 aihub에서 받은 100GB가 넘는 이미지 데이터를 팀원에게 전송해야 하고 우리에겐 유료 구글 드라이브가 여의치 않을 때...) scp를 사용하는 것도 좋은 방법이다.
위에서는 EC2에 접속하기 위해 key가 필요했지만, 서로 같은 네트워크에 있는 pc이거나 따로 인증 제한이 없다면 '-i <key_pem>' 부분을 빼고 실행하면 된다.
EC2에 접속해서 딥러닝이 완료됐는지 먼저 확인하고 (nohup.out의 마지막 10줄 조회)
tail -n -10 nohup.out
가져올 폴더의 권한을 변경해주고 (777: 모든 유저가 읽고 쓸 수 있음)
chmod -R 777 ./runs/train/exp14
로컬에서 파일 가져오는 명령어 실행
scp -r -i <key_pem> <remote_user_name>@<remote_public_dns>:<remote_path> <local_path>
속도가 로컬에서 EC2로 전송할 때보다 훨씬 빠르다. (초당 최대 10MB)
파일을 받았으니 EC2 인스턴스를 종료하자 :->