[파이썬] shutil로 로컬에서 원격 서버로 파일 전송하기

파이썬은 강력하고 다양한 라이브러리를 제공하여 파일 및 디렉토리 관리 작업을 쉽게 수행할 수 있습니다. 그 중 하나가 shutil이라는 라이브러리인데, 이를 사용하여 로컬 컴퓨터에서 원격 서버로 파일을 전송하는 방법에 대해 알아보겠습니다.

shutil이란?

shutil은 파일 및 디렉토리 작업을 위한 파이썬 표준 라이브러리입니다. 이 라이브러리는 파일 및 디렉토리 복사, 이동, 삭제 등 다양한 작업을 수행할 수 있습니다. 우리는 이 라이브러리를 사용하여 로컬 파일을 원격 서버로 전송할 것입니다.

원격 서버 설정

먼저, 파일을 전송할 원격 서버에 접속할 수 있어야 합니다. SSH를 통해 접속할 수 있다면, 다음과 같이 paramiko 라이브러리를 사용하여 원격 서버에 접속할 수 있습니다.

import paramiko

# 원격 서버에 연결하기 위한 정보
hostname = "원격 서버 IP 주소"
port = 22
username = "계정 이름"
password = "계정 비밀번호"

# SSH 클라이언트 생성
client = paramiko.SSHClient()

# 호스트 키를 자동으로 확인
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 원격 서버에 연결
client.connect(hostname, port, username, password)

# 여기에서 파일을 전송하는 작업을 수행합니다.
# ...

# SSH 세션 종료
client.close()

위의 예제 코드에서는 paramiko 라이브러리를 사용하여 SSH를 통해 원격 서버에 연결하는 방법을 보여줍니다. 이를 기반으로 파일을 전송할 준비를 하겠습니다.

로컬 파일을 원격 서버로 전송하기

이제 shutil을 사용하여 로컬 컴퓨터에서 원격 서버로 파일을 전송하는 방법에 대해 알아보겠습니다.

import paramiko
import shutil

# 로컬 파일 경로
local_path = "/로컬/파일/경로/파일.txt"

# 원격 서버 파일 경로
remote_path = "/원격/파일/경로/파일.txt"

# 접속할 원격 서버 정보
hostname = "원격 서버 IP 주소"
port = 22
username = "계정 이름"
password = "계정 비밀번호"

# SSH 클라이언트 생성
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 원격 서버에 연결
client.connect(hostname, port, username, password)

# shutil를 사용하여 로컬 파일을 원격 서버로 전송
shutil.copy(local_path, f"{username}@{hostname}:{remote_path}")

# SSH 세션 종료
client.close()

위의 코드에서는 shutil.copy() 함수를 사용하여 로컬 파일을 원격 서버로 복사합니다. shutil.copy() 함수의 첫 번째 인자로 로컬 파일 경로를, 두 번째 인자로 복사될 원격 서버 파일 경로를 지정합니다. f"{username}@{hostname}:{remote_path}" 형식을 사용하여 원격 서버에 전달합니다.

이제 위의 코드를 실행하면 로컬에서 원격 서버로 파일이 전송됩니다. 원하는 파일을 전송하기 위해 로컬 파일 경로와 원격 서버 파일 경로를 각각 수정해주시기 바랍니다.

결론

shutil 라이브러리를 사용하여 로컬에서 원격 서버로 파일을 전송하는 방법을 알아보았습니다. 이를 통해 파일 관리 작업을 자동화하고, 원격 서버와의 데이터 전송을 간편하게 수행할 수 있습니다. 파이썬의 유연성과 강력한 라이브러리를 통해 멋진 작업을 할 수 있습니다.