2022 데이터 사이언스/Linux

07. FTP 서버 구축

gool 2022. 5. 20. 08:39
FTP란 파일 전송을 위한 통신 규칙 또는 약속을 말한다.

 

 

 

FTP(File Transfer Protocol)는 서버와 클라이언트 장치 간 파일 전송을 위한 통신 규칙이다.

이번에는 FTP 설치 후 Windows에 있는 파일을 Linux로 넘겨주는 간단한 작업을 해볼 예정이다.

 

 

FTP server는 FTP를 사용하여 파일 전송을 할 수 있는 서버를 말한다.

클라이언트는 서버에 접속하여 자신의 파일을 서버에 저장(업로드)하거나,

서버의 파일을 자신의 컴퓨터에 저장(다운로드)할 수 있다.

 

 

 

FTP 설치 및 사용을 위한 작업

 

FTP 파일 전송을 위해, Linux(FTP server)Windows(FTP client)에서 할 작업이 있다.

 

 

(1) Linux

 

먼저 Linux에서는 아래 다섯 줄의 명령어를 차례로 입력해준다.

  • yum -y install vsftpd-* : FTP 설치
  • systemctl restart vsftpd : FTP server 동작
  • systemctl enable vsftpd : 부팅시 FTP server 자동으로 실행
  • firewall-cmd --permanent --add-service=ftp : 방화벽 예외규칙에 FTP 추가
  • firewall-cmd --reload : 방화벽 예외규칙 적용

 

첫 번째 명령어로 FTP가 성공적으로 설치되면 관련 내용과 함께 Complete! 안내가 출력된다.

다음 네 개의 명령어를 차례로 입력하고 success 안내를 받으면 Linux에서의 작업은 끝이 난다.

 

FTP 설치

 

FTP server, 방화벽 예외규칙 설정

 

 

(2) Windows

 

Windows에서는 FTP 통과가 가능하도록 방화벽 설정을 변경해주어야 한다.

 

제어판 보기 기준을 '범주'로 설정한 후,

시스템 및 보안 → Windows Defender 방화벽 → Windows 방화벽에서 앱 허용으로 진입한다.

허용되는 앱 및 기능에 '파일 전송 프로그램'이 존재하고 체크박스가 모두 선택되어 있으면,

cmd(명령 프롬포트)에서 FTP 접속이 가능하다.

 

* 반드시 개인, 공용 란을 모두 체크해야 한다.

하나라도 안 되어 있으면 파일 전송 과정에서 Failed to establish connection 에러가 발생한다.

 

 

파일 전송 프로그램이 허용되는 앱 및 기능 목록에 없는 경우 이를 목록에 추가해주어야 한다.

설정 변경 → 다른 앱 허용 → 앱 추가 → 찾아보기 → ftp.exe 열기 → 파일 전송 프로그램 추가

 

ftp.exe는 C:\Windows\System32 폴더에 위치하며, 확장명 숨김 상태에서는 'ftp'로 뜬다.

환경변수를 건드리지 않는 이상 '찾아보기' 클릭 시 기본 위치는 System32 폴더이다.

 

System32 폴더 내 ftp.exe 파일 선택

 

파일 전송 프로그램 앱 추가

 

 

 

FTP 사용 방법

 

사용에 앞서 클라이언트 쪽에서 파일 전송에 사용할 폴더를 세팅해야 한다.

Windows의 C:드라이브 안에 '05ftp' 폴더와 그 하위 폴더 'AM09'를 임의로 생성해준다.

 

AM09 폴더 안에 실습에 사용할 test.txt 파일을 생성 후 '보기 → 파일 확장명'을 체크한다.

파일 확장명은 파일명의 일부이므로, 파일의 전체 이름을 볼 수 있도록 하는 것이 좋다.

 

 

1. 접속

 

Windows의 cmd(명령 프롬포트)에서 FTP 서버 접속 작업을 진행한다.

접속 시도는 항상 FTP 클라이언트 쪽에서 이루어져야 한다.

 

접속 작업은 다음의 단계를 거쳐 이루어진다.

  • cmd 창 실행(Windows 검색 → 명령 프롬포트)
  • 드라이브 내 FTP에 사용할 폴더로 이동
  • ftp <Linux IP> (Linux IP 주소로 ftp 접속 시도)
  • 사용자 로그인 (root 아닌 일반 사용자 접속)

 

FTP 접속 시도(명령 프롬포트 실행 화면)

 

cd/ 명령어 입력 시 C:드라이브로 이동한다. (D:와 E:드라이브는 각각 d:와 e: 명령어 사용)

cd 명령어는 Windows cmd에서도 작동하므로, 이를 사용해 05ftp/am09 경로로 접근한다.​

(대소문자 구분이 없는 Windows는 am09와 AM09를 동일하게 인식한다.)

 

ftp <Linux IP> 형태의 명령어로 Linux 가상 컴퓨터 FTP 서버에 접근할 수 있다.

FTP는 root 계정으로 접속이 불가능하므로, 일반 사용자 itbank로 로그인을 시도한다.

(password : itbank)

 

Login successful 메시지가 출력되면 FTP 서버 접속에 성공한 것이다.

접속이 완료되면 FTP client 폴더와 FTP server 사용자 홈 디렉토리 간 파일 전송이 가능하다.

 

접속 종료는 quit 명령어를 사용한다.

장시간 입력이 없으면 FTP 접속이 자동으로 끊어지기 때문에,

접속 후 당장 실행할 작업이 없으면 바로바로 접속을 종료해주는 것도 좋다.

 

 

 

2. 파일 전송

 

 

1) 업로드

 

클라이언트가 자신의 컴퓨터에 있는 파일을 서버에 저장(복사)하는 작업이다.

'put 파일명' 형태의 명령어로 파일을 업로드 할 수 있다.

(* 업로드 할 파일이 FTP에 사용할 폴더 안에 있는 상태에서 입력)

 

FTP 서버 itbank 사용자의 홈 디렉토리가 비어있는 것을 확인하고 시작한다.

 

 

Windows 명령 프롬프트에서 FTP에 접속한 후 AM09 폴더의 test.txt 파일을 서버에 업로드한다.

Transfer complete 이후 홈 디렉토리에 test.txt 파일이 잘 들어가 있는 것을 확인할 수 있다.

 

put test.txt 명령어 실행

 

itbank 디렉토리 내 test.txt 파일 확인

 

간혹 Transfer complete 메시지가 아닌 Could not create file 오류가 출력되기도 한다.

이는 사용자 홈 디렉토리가 홈 디렉토리로서의 역할을 하지 못하기 때문에 발생한다.

기존의 사용자 홈 디렉토리를 삭제한 경우,

같은 위치에 같은 이름으로 디렉토리를 다시 만들어도 더 이상 홈 디렉토리로 기능하지 않는다.

아직은 정석으로 홈 디렉토리를 복구하는 법을 배우지 않았기 때문에,

실수로라도 홈 디렉토리를 지우게 된다면 삭제 이전의 snapshot을 찾아 돌아가면 된다.

 

 

 

2) 다운로드

 

클라이언트가 서버에 있는 파일을 자신의 컴퓨터에 저장(복사)하는 작업이다.

'get 파일명' 형태의 명령어로 파일을 다운로드 할 수 있다.

(* 다운로드 할 파일이 로그인 한 사용자의 홈 디렉토리 안에 있는 상태에서 입력)

 

/home/itbank/ 디렉토리에 /etc/inittab 파일을 복사해준다.

 

 

이번에는 get 명령어를 활용해 홈 디렉토리의 inittab 파일을 AM09 폴더로 다운로드한다.

마찬가지로 AM09 폴더에 inittab 파일이 잘 들어가 있는 것을 확인할 수 있다.

 

get inittab 명령어 실행

 

AM09 폴더 내 inittab 파일 확인

 

 

 

FTP 실습 예제

 

 

 

(풀이)

 

itbank 홈 디렉토리(현재 위치) 비우기

 

Windows 명령 프롬포트에서는 dir 명령어가 Linux의 ls -l 명령어의 역할을 한다.

dir 명령어로 AM09에 named.conf와 named.rfc1912.zones가 잘 위치해 있는지 확인한다.

 

AM09 폴더 내부의 목록 확인

 

named.conf, named.rfc1912.zones 파일 업로드(put)

 

named.conf, named.rfc1912.zones 두 개의 파일 모두 잘 옮겨진 것을 확인할 수 있다.

 

절대경로와 상대경로를 이용한 파일 병합

 

두 파일을 병합한 named.1과 named.2 역시 홈 디렉토리 안에 잘 들어가 있다.

병합이 잘 되었는지는 파일 크기를 통해 간단히 확인할 수 있다.

named.1, named.2의 파일 크기 1915는 기존 두 파일의 크기 984와 931을 합한 값이다.

 

 

 

'2022 데이터 사이언스 > Linux' 카테고리의 다른 글

09. vi 에디터(2): 실행 모드  (0) 2022.05.22
08. vi 에디터(1): 명령 모드, 입력 모드  (0) 2022.05.22
06. 기초 명령어(3)  (0) 2022.05.19
05. 기초 명령어(2)  (0) 2022.05.17
04. 기초 명령어(1)  (0) 2022.05.16