개발자라면 한 번쯤 경험해봤을 상황이다. 로컬 환경에서는 편리하게 코딩하고 싶지만, 실제 실행은 GPU가 장착된 원격 서버에서 해야 하는 경우 말이다. 매번 파일을 수동으로 전송하는 것은 번거롭고 비효율적이다. 이런 문제를 해결해주는 것이 바로 SFTP 자동 동기화다.
많은 개발자들이 SCP와 SFTP를 혼동한다. 둘 다 SSH 기반의 안전한 파일 전송 방법이지만, 사용 목적과 방식에서 명확한 차이가 있다.
구분 | SCP | SFTP |
---|---|---|
작동 방식 | 단순 복사 명령 | 대화형 파일 전송 세션 |
연결 유형 | 일회성 전송 | 지속적인 세션 연결 |
사용 방법 | 명령줄 한 번 실행 | 대화형 명령어 또는 GUI |
자동화 | 스크립트 자동화에 적합 | 에디터 연동 및 실시간 동기화에 적합 |
개발 환경에서 SFTP가 압도적으로 유리한 이유가 있다. 세션을 계속 유지하면서 파일이 변경될 때마다 즉시 업로드할 수 있고, 변경된 파일만 선택적으로 전송하기 때문에 효율적이다. 반면 SCP는 매번 새로운 연결을 생성해야 하므로 자동 동기화에는 적합하지 않다.
Ctrl+Shift+X
)Ctrl+Shift+P
로 Command Palette를 연다.vscode/sftp.json
파일이 생성된다{
"name": "my-server",
"host": "192.168.1.100",
"protocol": "sftp",
"port": 22,
"username": "your_username",
"remotePath": "/home/your_username/project/",
"uploadOnSave": true,
"useTempFile": false,
"openSsh": true,
"ignore": [
"**/__pycache__/**",
"**/*.pyc",
"**/node_modules/**",
"**/.git/**",
"**/.DS_Store"
]
}
여기서 가장 중요한 설정은 uploadOnSave: true
다. 이 옵션 하나로 저장할 때마다 자동으로 원격 서버에 파일이 업로드된다. 마치 마법처럼 말이다.
옵션 | 설명 | 권장값 |
---|---|---|
uploadOnSave | 저장 시 자동 업로드 | true |
useTempFile | 임시 파일 사용 여부 | false |
openSsh | OpenSSH 사용 | true |
ignore | 업로드 제외 파일/폴더 | 캐시, 로그 파일 등 |
설정을 완료했다면 이제 실제로 연결이 되는지 확인해야 한다.
Ctrl+Shift+P
→ "SFTP: List
"를 선택한다최초 설정 시에는 기존 프로젝트 파일들을 모두 업로드해야 한다.
Ctrl+Shift+P
→ "SFTP: Upload Project
"이 과정은 프로젝트 크기에 따라 시간이 걸릴 수 있다. 특히 머신러닝 프로젝트의 경우 데이터셋이 포함되어 있다면 상당한 시간이 소요될 수 있다.
설정이 완료되면 이제 진짜 편리한 개발 환경이 시작된다.
이렇게 간단하다. 더 이상 매번 파일을 수동으로 전송할 필요가 없다.
명령어 | 기능 |
---|---|
SFTP: Upload Project | 전체 프로젝트 업로드 |
SFTP: Download Project | 전체 프로젝트 다운로드 |
SFTP: Sync Remote → Local | 원격에서 로컬로 동기화 |
SFTP: Sync Local → Remote | 로컬에서 원격으로 동기화 |
SFTP: Sync Both Directions | 양방향 동기화 |
때로는 특정 파일이나 폴더만 업로드하고 싶을 때가 있다. 이럴 때는 Explorer에서 해당 파일이나 폴더를 우클릭하고 "Upload File" 또는 "Upload Folder"를 선택하면 된다.