환경
-visual studio 터미널 사용
-linux기반 ssh원격 서버
- 아래 명령어를 사용해서 어떤 파일과 디렉토리가 있는지 확인 후 압축(visual studio터미널 사용함)
ls -l
zip -r example.zip example
- 처음에 visual studio터미널에서 아래와 같은 명령어를 사용해, 다운로드를 하려고 했는데 실패함
scp [옵션] [유저명]@[원격 서버 IP 주소]:[원격 파일 경로] [로컬 저장 경로]
scp -P 22 user@example.com:/home/user/example.zip /mnt/c/example.zip
- 이 명령어를 실행했을때/ 오류메시지
scp: open local "/mnt/c/example.zip": No such file or directory
찾아보니, wsl 환경에서의 파일 경로 문제로 인해 오류가 발생한 것이라는 것을 알게됨
/mnt/c/는 WSL 에서 Windows파일시스템을 나타내는 경로인데, wsl 이 올바르지 않거나, 이 경로가 마운트 되지 않은 경우,
해당 경로에 접근 할 수 없어 오류가 발생한 것이라고 함
그리고 visual studio 터미널의 환경차이로 인해 오류가 발생할 수 있음
visual studio터미널은 powershell, cmd와 달리 기본적으로 Linux환경의 파일 경로 체계를 따르기 때문, /mnt/c/ 경로가 유효하지 않으면 파일 저장 불가
wsl 설정 확인하고 마운트 문제를 해결해, visual studio터미널에서 해결하는 방법도 있지만
powershell을 사용하는게 더 간단한 방법이라고 해서
PowerShell에서 다운로드 시도
scp [옵션] [유저명]@[원격 서버 IP 주소]:[원격 파일 경로] [로컬 저장 경로]
scp -P 22 user@example.com:/home/user/example.zip C:\example.zip
위와 같은 명령어를 사용해서 성공함
-PowerShell에서 성공한 이유를 찾아보니, wsl경로를 사용하지 않고, window의 로컬 경로를 사용 했기 때문
-PowerShell은 wsl과 분리된 windows네이티브 환경에서 동작하기 떄문( /mat/c/가 마운트되지 않아도 상관 없음)
scp명령어 간단 정리
- -P [포트 번호]:
SSH 연결에 사용할 포트를 지정, 기본값은 22번. - -r:
디렉토리와 그 하위 파일을 모두 복사 (재귀적 복사) - -v:
파일 전송 과정을 자세히 보여줌 (디버그 모드) - -C:
파일을 압축하여 전송 속도를 빠르게 함