PuTTY는opensource 소프트웨어로, 현재 최신 버전은 0.70입니다. 파일 또는 폴더를 업로드 또는 다운로드할 때 Windows에서 사용할 수 있는 도구로 pscp와 psftp라는 두 가지 명령이 있습니다.
(1) pscp
pscp는 명령 프롬프트에서 사용할 수 있으며, PuTTY(SSH)가 원격 접속이 가능하면 이 명령을 사용할 수 있습니다.
pscp [Windows 경로(절대 또는 상대 경로)] [Linux 사용자]@[Linux IP 주소 또는 네트워크 내 고유 호스트명]:[Linux 저장 경로(절대 경로)]
pscp [Linux 사용자]@[Linux IP 주소 또는 네트워크 내 고유 호스트명]:[Linux 저장 경로(절대 경로)] [Windows 경로(절대 또는 상대 경로)]
Windows 경로가 앞에 오면 Windows에서 Linux로 파일을 업로드하고, Linux 경로가 앞에 오면 Windows에서 Linux로 파일을 요청하여 다운로드합니다.
또한 pscp에는 여러 옵션이 있습니다. 여기에서는 6개의 흔히 사용되는 옵션을 설명합니다.
-p 원본 파일의 생성 시간을 보존합니다.
-q 파일 복사 중 아무런 메시지도 표시하지 않습니다.
-r 디렉터리 전체를 복사합니다.
-v 파일 복사를 할 때 진행 상태를 표시합니다.
-sftp SFTP 프로토콜을 강제로 사용합니다.
-scp SCP 프로토콜을 강제로 사용합니다.
아래 예를 들어 파일夹을 복사하는 방법을 보여줍니다.
C:\Users\username>pscp -r user@linux-server:/path/to/folder C:\Desktop\
user@linux-server's password:
file1.txt | 크기 | 속도 | 예상소요시간 | 진행률
----------------------------|------|------|------------|---------
config.h | 5 kB | 5.0 kB/s | 00:00:00 | 100%
LICENSE | 17 kB | 17.6 kB/s | 00:00:00 | 100%
configure | 226 kB | 226.1 kB/s | 00:00:00 | 100%
missing | 10 kB | 10.1 kB/s | 00:00:00 | 100%
example.o | 1600 kB | 1600.2 kB/s | 00:00:00 | 100%
명령이 끝난 후에는 C:\Desktop에 folder 이름의 폴더가 생깁니다. Linux와 Windows 간의 인코딩 문제로 한글 파일명이나 내용이 있는 파일에서는 문제점이 발생할 수 있습니다.
Windows에서 업로드할 때는乱码가 발생하더라도 convmv와 iconv를 통해 해결할 수 있습니다(자세한 내용은 "Windows에서 파일 복사 시 Linux에서亂碼가 발생하는 문제" 참조). Windows에서 파일을 받을 때 한글 파일명이 있을 경우 파일을 찾을 수 없을 수 있습니다.
(2) psftp
psftp도 명령 프롬프트에서 사용할 수 있지만, PuTTY가 제공하는 인터페이스 아이콘을 통해 직접 실행할 수 있습니다. 이와 함께三种사용 방법이 있습니다.
第一, 명령 프롬프트에서 Linux 사용자@IP 주소나 네트워크 내 고유 호스트명을 지정하고 psftp를 실행하면 즉시 psftp 모드로 들어갑니다. 이때 Windows의 기본 업로드/다운로드 경로는 명령을 실행한 위치입니다. 예를 들어 C:\Users\username>psftp user@linux-server, 이때 기본 다운로드 경로는 C:\Users\username입니다.
第二, 명령 프롬프트에서 psftp를 실행한 후 open 명령으로 Linux 서버에 접속해야 합니다. 이때도 기본 경로는 명령을 실행한 위치입니다.
第三, PuTTY가 제공하는 PSFTP 아이콘을 통해 직접 실행하면 즉시 psftp 모드로 들어가며, Linux 서버에 접속하려면 open 명령을 사용해야 합니다. 기본 다운로드 경로는 PSFTP가 설치된 위치입니다.
참고: 명령 프롬프트가 관리자 권한으로 실행되지 않으면 시스템 디스크下半부의 파일 업로드가 제한되고, 일부 경로에 파일을 저장할 수 없습니다.
다음은 psftp의 주요 명령입니다.
put 파일 업로드, 디렉터리 복사는 -r 옵션 필요
get 파일 다운로드, 디렉터리 복사는 -r 옵션 필요
mput 여러 파일 업로드
mget 여러 파일 다운로드
cd 서버 측에서 작업 디렉터리 변경
pwd 서버 측에서 현재 디렉터리 표시
lcd 로컬 측에서 작업 디렉터리 변경
lpwd 로컬 측에서 현재 디렉터리 표시
디렉터리를 업로드하는 예를 보겠습니다.
C:\Users\username>psftp user@linux-server
Using username "user".
user@linux-server's password:
Remote working directory is /home/user
psftp> lcd Desktop // 로컬 경로 변경
New local directory is C:\Users\username\Desktop
psftp> put -r folder // 폴더 업로드
local: unable to open folder
psftp> mput file1.txt file2.txt // 여러 파일 업로드
여러 파일을 다운로드하는 예를 보겠습니다.
psftp> mget file1.log file2.log // 여러 파일 다운로드
remote:/home/user/file1.log => local:file1.log
remote:/home/user/file2.log => local:file2.log
단일 파일 또는 폴더를 업로드하거나 다운로드할 때는 이름을 변경할 수 있습니다.
psftp> get -r folder new_folder // 폴더 다운로드 및 이름 변경
remote:/home/user/folder/LICENSE => local:new_folder/LICENSE
remote:/home/user/folder/Makefile => local:new_folder/Makefile
특정 경로로 파일을 저장하려면 다음과 같이 명령을 실행할 수 있습니다.
psftp> get file1.txt D:\Documents // 파일 다운로드 및 경로 지정
remote:/home/user/file1.txt => local:D:\Documents\file1.txt
pscp와 마찬가지로 한글 파일명 문제는 동일하게 발생합니다. 이 문제에 대한 자세한 내용은 "Windows에서 파일 복사 시 Linux에서亂碼가 발생하는 문제"를 참조하세요.