Skip to content

Server Message Block

서버 메시지 블록(Server Message Block, SMB)은 도스나 윈도우에서 파일이나 디렉터리 및 주변 장치들을 공유하는데 사용되는 메시지 형식이다. NetBIOS는 SMB 형식에 기반을 두고 있으며, 많은 네트워크 제품들도 SMB를 사용한다. 이러한 SMB 기반의 네트워크에는 랜매니저, 윈도우 포 워크그룹(Windows for Workgroups), 윈도우 NT, 그리고 랜 서버(Lan Server) 등이 있다. 서로 다른 운영체제 사이에 파일을 공유할 수 있도록 하기 위해 SMB를 사용하는 제품들도 많이 있다. 그 중 하나가 삼바인데, 유닉스와 윈도우 컴퓨터들간에 디렉터리와 파일을 공유할 수 있게 해 준다.

SMB는 대부분 마이크로소프트 윈도우를 실행하고 있는 컴퓨터에서 이용된다. 마이크로소프트 환경에서 사용자들은 대개 이를 단순히 "마이크로소프트 윈도우 네트워크"로 알고 있다.

서버 메시지 블록(SMB)에 대해 논할 때에는 다음을 구별해야 한다:

  • SMB 프로토콜
  • 프로토콜 위에서 동작하는 SMB 서비스
  • 넷바이오스(NetBIOS)
  • SMB를 권한을 수여 받은 프로세스 간 통신 채널로 사용하는 DCE/RPC 서비스 (지명 파이프 위에서)
  • 주로 데이터그램 서비스로 직접 넷바이오스 전송 계층 위에서 동작하는 네트워크 환경 프로토콜

curl 다운로드/업로드

다운로드:

files=(
20230728000000_0000_CH04_041.smi
20230728000000_0000_CH04_042.avi
20230728000000_0000_CH04_042.smi
20230728000000_0000_CH04_043.avi
20230728000000_0000_CH04_043.smi
20230728000000_0000_CH04_044.avi
20230728000000_0000_CH04_044.smi
20230728000000_0000_CH04.avi
20230728000000_0000_CH04.smi
)

for i in ${files[@]}; do
  curl -u 'Windows\username:passwd' -O "smb://192.168.0.2/20tb_data/20230728/0000_000/$i"
done

업로드:

URL="smb://192.168.0.2/20tb_data/Videos/230727/Inference"
for i in ${files[@]}; do
  ## 주소 마지막에 업로드할 디렉토리가 아닌 업로드할 파일명까지 넣어야 한다.
  curl -T "$i" -u 'Windows/username:passwd' "$URL/$i"
done

사용자 입력 가능 버전

#!/usr/bin/env bash

ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" || exit; pwd)

PREFIX="20tb_data/Models

read -r -e -i mynas -p "Please enter the host: " HOST
read -r -e -i "$USER" -p "Please enter the username: " USERNAME
read -r -s -p "Please enter the password: " PASSWORD

MODEL="rtmdet-ins_x_8xb16-300e_coco_2nd"
FILENAME="epoch_300.pth"
OUTPUT="rtmdet-ins_x_8xb16-300e_coco_2nd-epoch_300.pth"

curl -v -u "Windows\\${USERNAME}:${PASSWORD}" \
    -o "${OUTPUT}" \
    "smb://${HOST}/${PREFIX}/${MODEL}/${FILENAME}"

Linux 에서 Mount 하는 방법

자세한 내용은 cifs-utils 항목 참조.

See also

Network-attached storage (NAS)

Favorite site