반응형

 

 

sftp 명령을 이용하여 Server와 PC(Client) 간에 파일을 전송하는 방식을 주로 사용하지만,

가끔 Linux 서버에 SFTP 서버 데몬이 구동되어 있지 않거나 ssh 터미널만 접속한 상태에서 즉시 파일을 전송할 때는 rz, sz 같은 zmodem을 사용하면 편하다.

(1990년 대, 하이텔 또는 나우누리 또는 천리안 같은 PC 통신을 사용한 사람이라면 대충 zmodem에 대한 느낌이 팍~ 올거다)

 

 

 

Mac OS에 rz sz 모뎀 프로그램 설치하기

 

##
## zmodel(즉, rz와 sz)를 사용하기 위해서는 xcode 개발자 도구가 필요하다.
## 따라서 아래와 같이 xcode를 설치한다.
##

$  xcode-select --install
xcode-select: note: install requested for command line developer tools

##
## lrzsz 프로그램 설치하기
##

$  brew install lrzsz

##
## rz, sz 명령을 수행했을 때, iTerm2를 Triggering할 수 있도록 
## Shell Script를 만든다.
## ( 이미 다른 사람이 친절하게 iTerm2 Triggering 스크립트를 만들었다. 
##   그냥 아래 설명처럼 Script 파일을 복사해서 사용하면 된다. )
##

$  git clone https://github.com/robberphex/iTerm2-zmodem.git

$  sudo  cp iterm2-*-zmodem.sh /usr/local/bin/

 

 

 

Iterm2 터미널 Trigger 기능 설정

 

아래 화면처럼 Triggers 설정 항목에 rz, sz 명령에 관한 Trigger 정보를 추가한다.

 

Default Profile에 Triggers 기능 추가하기

 

iTerm2 터미널의 RZ, SZ 명령에 대한 Trigger 정보 추가

 

 

위 과정까지 따라했다면, 설치와 설정 작업은 끝이다.

 

 

 

실제로 파일을 전송해보자 !!!

 

Linux 서버에 SSH 접속해서 아래처럼 명령을 수행해보자.

그러면 자동으로 Finder 창이 열릴 것이고, test-img.jpg를 저장할 폴더를 선택해준다.

그러면 알아서 파일이 내 PC(즉, 맥북)에 전송될 것이다.

 

 

 

 

 

Troubleshooting  (문제, 오동작 해결하기)

 

위 설명을 따라서 설치하면 대부분 rz, sz 명령은 잘 동작한다.

그런데 만약 rz, sz 명령을 수행했는데, 제대로 파일이 전송되지 않는다면 아래와 같이 rz, sz 명령의 경로가 올바른지 한번 확인하고 명령의 경로만 잘 설명해주면 된다.

 

$  sudo  cat  /usr/local/bin/iterm2-recv-zmodem.sh

#!/bin/bash
# Author: Matt Mastracci (matthew@mastracci.com)
# AppleScript from http://stackoverflow.com/questions/4309087/cancel-button-on-osascript-in-a-bash-script
# licensed under cc-wiki with attribution required
# Remainder of script public domain

osascript -e 'tell application "iTerm2" to version' > /dev/null 2>&1 && NAME=iTerm2 || NAME=iTerm
if [[ $NAME = "iTerm" ]]; then
    FILE=$(osascript -e 'tell application "iTerm" to activate' -e 'tell application "iTerm" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
else
    FILE=$(osascript -e 'tell application "iTerm2" to activate' -e 'tell application "iTerm2" to set thefile to choose folder with prompt "Choose a folder to place received files in"' -e "do shell script (\"echo \"&(quoted form of POSIX path of thefile as Unicode text)&\"\")")
fi

if [[ $FILE = "" ]]; then
    echo Cancelled.
    # Send ZModem cancel
    echo -e \\x18\\x18\\x18\\x18\\x18
    sleep 1
    echo
    echo \# Cancelled transfer
else
    cd "$FILE"
##
## NOTE : 본인 Mac PC에 설치한 rz, sz 명령의 위치가 /usr/local/bin 인지 /opt/homebrew/bin 인지
##        확인하고, 아래 예제처럼 올바르게 경로를 설정해주어야 한다.
##
#   /usr/local/bin/rz --rename --escape --binary --bufsize 4096
    /opt/homebrew/bin/rz --rename --escape --binary --bufsize 4096
    sleep 1
    echo
    echo
    echo \# Sent \-\> $FILE
fi

 

 

반응형

Mac OS의 iTerm2 터미널에서 한글 파일명을 작성하면, 아래 화면처럼 음소(자음, 모음)가 분리되면서 깨져 보이는 현상이 있다.

(자음, 모음 또는 초성, 중성, 종성이 분리되는 현상)

iterm2 설치 후, 아무런 설정을 하지 않고 기본 설정을 사용하면 이렇게 한글이 깨져 보인다.

한글 초성, 중성, 종성이 모두 분리되서 출력된다.

 

이 때,  iTerm2의 설정 화면을 보면 아래 화면처럼 [Unicode normalization form] 항목이 NFD로 되어 있을 것이다.

 

iTerm2 App의 [Preferences] / [Text] 설정

 

NFD를 다른 값으로 설정하면, 한글이 정상 모양으로 잘 출력된다. (아래 그림을 참고)

내 Macbook의 경우에는 [None, NFC, HFS+] 중에서 아무거나 선택해도 효과는 동일하게 잘 동작했다.

그런데, 다른 Mac User 중에서는  NFC만 잘 된다고 하는 User도 있는 걸로 봐서, 찜찜하면 NFC로 설정하는 것이 좋을 듯!!

 

iTerm2 App의 [Preferences] / [Text] 설정

 

한글 초성, 중성, 종성이 합쳐져서 보여진다.

 

Unicode normalization form을 NFD에서 NFC로 설정해서 잘 동작하니까 좋긴 한데, NFD, NFC가 무엇인지 잘 모르겠다.

NFD, NFC에 관한 자세한 설명은 아래 Web Docs를 참고하길 ~~~

 

Reference

 

 

유니코드 정규화(Unicode Normalization Form) 문제

 

www.hungrydiver.co.kr

 

+ Recent posts