역시 파일 전송은 SFTP
추가 개발을 위한 개발 환경을 구축하고 있었는데, 새로운 테이블이 필요해서 다른 서버의 테이블을 가져와야 하는 상황이 발생했다.
전에는 Window로 파일을 보내 FileZilla(FTP 프로그램)를 사용하여 서버로 파일을 보냈었다.
하지만 이번에는 SFTP 기능을 사용하여 Mac에서 바로 업로드를 시도했다.
SSH(Secure Shell)의 확장인 SFTP를 사용하면 데이터 전송이 암호화되므로 보안적인 이점을 제공하며, 이를 통해 중간에서의 데이터 유출을 방지하고 안전하게 파일을 전송할 수 있다고 한다.
SFTP 너도 쓸 수 있어
SFTP 연결방법은 다음과 같다.
( iTerm2를 열며.. )
sftp -oPort=port번호 username@server(ip 또는 url)
비밀번호를 입력하고 “sftp>” 프롬프트가 나타나면, SFTP에 성공적으로 로그인한 것이다.
이제 로컬 파일을 서버로 전송하려면 다음 명령을 사용한다.
put /로컬/파일/경로/예시.txt /서버/디렉토리/경로/예시.txt
/로컬/파일/경로/예시.txt
는 로컬 시스템의 파일 경로/서버/디렉토리/경로/예시.txt
는 서버의 대상 디렉토리 경로
이렇게 하면 파일 업로드가 된다는데 나는 No such file or directory
에러가 발생했다.
이 에러는 일반적으로 서버에 대상 디렉토리가 없거나 업로드할 파일의 경로가 잘못되었을 때 발생한다고 한다.
하지만 로컬과 서버에서 pwd
명령어로 경로를 출력해서 사용했는데, 에러가 발생해서 당황스러웠다.
도커는 벽이야
파일 업로드가 실패한 이유로 도커(Docker)의 영향이 있었다.
일반적으로 SSH나 SFTP를 통해 서버에 연결할 때는 서버의 파일 시스템에 직접 접근할 수 있지만 Docker와 같은 컨테이너 기술을 사용할 때는 이러한 접근이 제한될 수 있다고 한다.
도커 컨테이너 내부에서 실행 중인 서비스나 어플리케이션은 호스트 시스템과 완전히 분리되어 있으며, 도커 호스트와는 별도의 파일 시스템을 가지고 있기 때문에 도커 컨테이너 내부에서는 호스트 시스템의 파일 시스템에 직접 접근할 수 없다고 한다.
따라서 파일을 서버로 업로드할 때는 도커 컨테이너 내부의 경로가 아닌 도커 호스트의 경로를 사용해야 한다.
새로 알게 된 부분 중에 제일 인상적인 것은 도커 호스트의 데이터베이스를 수정하면 서버 내부의 데이터베이스도 영향을 받는다는 점이었다.
도커 컨테이너 내부로 sql 파일을 어떻게 옮길지 고민했는데 다행이었다.