FTP·SFTP·SCP·rsync 명령을 INNORIX CLI로 전환

전환 준비

기존 ftp / sftp / scp / rsync 명령과 이를 감싼 스크립트를 INNORIX CLI(콘솔 전송 클라이언트, Exacoola 백엔드 구동)로 옮기기 위한 사전 작업입니다. INNORIX CLI는 위 네 도구의 명령 구조를 그대로 수용하도록 설계되어, 대부분의 전환은 명령 앞에 innorix를 붙이고 대상 표기와 인증 방식만 교체하는 수준으로 끝납니다.

환경 조사

설명

전환 대상 작업을 먼저 목록화합니다. 지금 구조에서 실제로 의미가 있는 항목만 조사하면 됩니다. 인증 방식(SSH 키·.netrc·비밀번호 등)은 모두 계정 로그인으로 대체되므로 개별 조사 대상이 아닙니다.

조사 항목

항목조사 내용
작업과 호출 위치대화형 / 스크립트(셸·배치·PowerShell) / 예약 작업(cron·systemd timer·작업 스케줄러)
원 명령과 대상어떤 도구로 어떤 호스트에 전송하는지
대상 호스트 → 장비기존 호스트를 INNORIX 장비(장비 ID·IP·이름)로 매핑 — 전환의 핵심 산출물
경로·인코딩한글 파일명·대소문자 등 유지해야 할 경로 조건

예시

작업원 명령호출 위치대상 호스트 → 장비
nightly-report-syncrsync -az ...cron (매일 02:00)backup.internalweb-01

지원 확인

설명

INNORIX CLI로 대체 가능한지 각 작업 단위로 확인합니다. 지원 여부가 애매한 작업은 "보류"로 표시해 병행 운영 단계에서 실측으로 판정합니다.

점검 기준

기준확인 내용
프로토콜 커버리지호환 서브명령(ftp/sftp/scp/rsync)으로 표현 가능한가
기능 대응재귀 복사·대역폭 제한·재개·제외 패턴 등 대응이 존재하는가
미지원·주의압축·권한 보존·미러 삭제(--delete)·심볼릭 링크·원격 셸 실행 등은 대안을 정함

CLI 준비

설명

INNORIX CLI를 설치하고 Exacoola 계정(이메일 + 비밀번호)으로 로그인해 세션을 만듭니다. 이후 명령은 저장된 세션으로 인증되므로 개별 명령에 인증 정보를 넣지 않습니다.

사용 옵션

옵션설명
--endpoint <host:port>로그인 대상 Exacoola 서버
--email <email>로그인 이메일
--profile <name>저장된 서버·계정 프로파일 사용

예시

설치:

bash
# Linux (.deb / .rpm)
sudo dpkg -i innorix-cli_x.y.z_amd64.deb
innorix --version

로그인 — 비밀번호는 대화형으로 입력받아 세션을 생성합니다.

bash
innorix login --endpoint exa.example.com:443 --email hyunmin@example.com
# Password: ********      ← 화면·셸 히스토리에 남지 않음

프로파일 등록 — 서버·이메일만 저장되고 비밀번호는 저장되지 않습니다.

bash
innorix profile add prod --endpoint exa.example.com:443 --email hyunmin@example.com

처리 순서

  1. 패키지 설치 후 innorix --version으로 확인
  2. innorix login으로 이메일 입력·비밀번호 대화형 입력 → 세션 생성(~/.innorix/session)
  3. (선택) innorix profile add로 반복 사용 서버·계정 저장

장비 지정

설명

전송 대상 장비는 URI 형태 exa://<장비 선택자>/<경로>로 지정합니다. 장비 선택자는 장비 ID·IP·MAC 주소·장비 이름 중 하나를 씁니다. 명령을 실행하는 로컬 PC는 자신의 MAC 주소를 서버에 전달해 장비 ID를 자동으로 조회하므로, 로컬 측은 지정할 필요가 없고 명령에서 지정하는 장비는 항상 전송 상대(원격) 장비입니다.

사용 표기

방식표기
장비 이름(기본)<deviceName> 또는 name:<deviceName>exa://web-01/data/
장비 IDid:<deviceId>exa://id:DEV-1024/data/
IP 주소ip:<ip>exa://ip:192.168.0.10/data/
MAC 주소mac:<mac>exa://mac:00-1a-2b-3c-4d-5e/data/
  • 접두어를 생략하면 장비 이름으로 해석합니다.
  • MAC 주소는 URI 표기 충돌을 피해 콜론(:) 대신 하이픈(-)으로 구분합니다.
  • 로그인 대상 서버(--endpoint, 포트 포함)와 전송 대상 장비(exa://<장비>)는 별개입니다.
  • 호환 서브명령(scp/rsync 등)에서는 이식성을 위해 exa:// 대신 레거시 콜론 표기 <장비>:/path도 받습니다(scp의 user@host 자리에 장비 식별자, 옛 user@는 무시). 이때는 접두어 없는 식별자만 사용합니다.

명령 전환

INNORIX CLI는 두 갈래의 명령을 제공합니다. 네이티브 전송 innorix <소스> <대상>은 동사 없이 소스·대상 위치로 방향을 판별하고(로컬→원격 업로드, 원격→로컬 다운로드, 원격→원격 장비 간 전송), 호환 서브명령 innorix ftp / sftp / scp / rsync는 기존 스크립트를 최소 수정으로 이식하기 위해 기존 도구의 플래그·인자를 그대로 받습니다. 전송 외 작업은 예약 키워드 innorix ls / rm / mkdir / login / profile로 수행합니다.

FTP 전환

설명

FTP 세션에서는 put/get만 지원합니다. ftp host 자리에 대상 장비를 지정하고(innorix ftp <장비>), 기존 스크립트의 user 줄은 사전 로그인 세션으로 대체되어 제거합니다. binary/ascii 모드 구분은 불필요합니다(항상 바이너리 안전 전송).

예시

bash
# 기존
ftp -n ftp.example.com <<'END'
user alice s3cret
binary
put report.pdf /incoming/report.pdf
bye
END

# INNORIX CLI — 장비를 인자로, put/get만
innorix ftp web-01 <<'END'
put report.pdf /incoming/report.pdf
get /incoming/result.csv ./result.csv
bye
END

처리 순서

  1. innorix ftp <장비>로 세션 시작(인증은 사전 로그인 세션 사용)
  2. put/get으로 파일 전송
  3. bye로 세션 종료

SFTP 전환

설명

sftp user@host 대신 innorix sftp <장비>로 세션을 엽니다. 대화형·배치(-b) 모두 대응하며, put/get/ls/mkdir/rm 구문은 대부분 그대로 재사용합니다.

예시

대화형:

bash
# 기존
sftp alice@sftp.example.com

# INNORIX CLI
innorix sftp web-01
innorix> put archive.zip /data/archive.zip
innorix> get /data/result.csv ./result.csv
innorix> bye

배치(비대화):

bash
# 기존
sftp -b commands.txt alice@sftp.example.com

# INNORIX CLI
innorix sftp web-01 -b commands.txt

처리 순서

  1. innorix sftp <장비>로 세션 시작(또는 -b로 배치 파일 실행)
  2. put/get 등 기존 구문으로 전송
  3. 세션 종료

SCP 전환

설명

scp는 레거시 콜론 표기 <장비>:/path를 씁니다. scp의 user@host 자리에 장비 식별자(장비 ID·IP·이름, MAC은 하이픈형)만 넣고 옛 user@는 무시됩니다. -r(재귀)은 동일하게 유지하며, 접속 포트는 장비 경로가 아니라 로그인 시 서버 엔드포인트에 지정합니다.

예시

bash
# 기존 — 업로드
scp report.pdf alice@host.example.com:/incoming/
# INNORIX CLI — host 자리에 장비 ID
innorix scp report.pdf DEV-1024:/incoming/

# 기존 — 디렉터리 재귀 다운로드
scp -r alice@host.example.com:/data/logs ./logs
# INNORIX CLI
innorix scp -r DEV-1024:/data/logs ./logs

처리 순서

  1. 원 명령의 user@host 토큰을 장비 식별자로 교체
  2. -r 등 기존 플래그는 그대로 유지
  3. 실행 → 사전 로그인 세션으로 인증되어 전송

rsync 전환

설명

rsync도 콜론 표기 <장비>:/path를 씁니다. -a(재귀)·--exclude·--bwlimit·--partial 등 자주 쓰는 옵션은 그대로 유지하되, -v·-z/-C·-p 등 INNORIX CLI가 다루지 않는 플래그는 뺍니다. 미러 삭제(--delete)는 현재 미지원입니다. 경로 끝 슬래시 규칙은 rsync와 동일하게 유지됩니다(후행 / 유무가 "내용 복사 vs 디렉터리 복사"를 결정).

예시

bash
# 기존 — 압축 + 진행률
rsync -avz --progress ./site/ alice@host.example.com:/var/www/site/
# INNORIX CLI (v/z/C/p 등 생략)
innorix rsync -a --progress ./site/ web-01:/var/www/site/

# 제외 패턴 + 대역폭 제한 + 재개
rsync -a --exclude='*.tmp' --bwlimit=5000 --partial ./data/ host:/dest/
innorix rsync -a --exclude='*.tmp' --bwlimit=5000 --partial ./data/ web-01:/dest/

처리 순서

  1. user@host 토큰을 장비 식별자로 교체
  2. -v·-z·-p 등 미지원 플래그 제거, 나머지 유지
  3. 실행

장비 간 직접 전송

설명

소스와 대상을 모두 원격 장비로 지정하면 자동으로 장비 간 직접 전송이 됩니다 — 데이터가 로컬을 거치지 않고 두 장비 사이에서 직접 이동합니다. 네이티브 전송 기본형을 사용하며, 의도를 명시적으로 강제할 때만 --remote-to-remote를 붙입니다.

예시

bash
# 기존 — scp 원격 간 복사(로컬 경유)
scp -r alice@hostA:/data/ bob@hostB:/data/

# INNORIX CLI — 로컬 미경유 직접 전송
innorix exa://siteA/data/ exa://siteB/data/

# 명시적으로 강제
innorix --remote-to-remote exa://siteA/data/ exa://siteB/data/

처리 순서

  1. 소스·대상을 모두 exa://<장비>/...로 지정
  2. 자동으로 로컬 미경유 장비 간 전송 수행
  3. (선택) --remote-to-remote로 명시적 강제

암호화 전송

설명

전송 구간 암호화 여부는 모든 명령에 공통으로 적용되는 전역 옵션 --encrypt <true|false>로 지정합니다(미지정 시 기본 true). 전용 서브명령은 없으며, 신뢰된 사설망 내부에서 성능을 우선할 때만 false를 고려합니다.

사용 옵션

옵션설명
--encrypttrue(기본) · false전송 구간 암호화 사용 여부

예시

bash
innorix --encrypt true ./logs exa://web-01/data/logs
innorix --encrypt false ./bulk/ exa://web-01/staging/

옵션 매핑

설명

기존 옵션과 INNORIX CLI 옵션의 대응입니다. "동일"은 같은 플래그를 그대로 사용함을 뜻합니다.

공통 / SCP·rsync 옵션

기존 옵션의미INNORIX CLI비고
-r / -a재귀동일하위 디렉터리 재귀 전송
--progress진행률--progress / -P
--exclude / --include제외·포함동일glob 문법 유지
--partial / --append재개--resume명칭 통일
--bwlimit=N대역폭 제한동일KB/s
-i keyfile / 비밀번호인증innorix login사전 로그인 세션

전환 시 제거: -v(상세), -z/-C(압축), -p(권한 보존), -P 2222(포트). 포트는 서버 엔드포인트(--endpoint)에, 상세 출력은 --log-level로 대체합니다.

INNORIX CLI 전역 옵션

옵션의미
--verify <algo>전송 후 무결성 검증(예: sha256)
--encrypt <true|false>전송 구간 암호화(기본 true)
--remote-to-remote장비 간 직접 전송 강제(모두 원격이면 자동 적용)

스크립트 전환

명령 단위 전환이 끝나면 이를 감싼 스크립트의 호출부만 교체합니다. 종료 코드 분기, 출력 파싱, 비대화 실행 정책은 그대로 유지하되 INNORIX CLI 규약에 맞춰 확인합니다.

셸 스크립트

설명

호출부만 교체하고 나머지 로직은 유지합니다. 종료 코드($?) 분기, grep/awk 출력 파싱, 확인 프롬프트 억제(-y/--yes)를 점검합니다.

예시

bash
#!/usr/bin/env bash
set -euo pipefail

# 기존: rsync -avz ./out/ alice@host:/var/www/out/
innorix rsync -a ./out/ web-01:/var/www/out/

처리 순서

  1. 전송 호출부를 innorix ...로 교체
  2. 종료 코드·출력 파싱 로직이 유지되는지 확인
  3. 비대화 실행 옵션 명시

배치·PowerShell

설명

Windows 배치·PowerShell도 호출부만 교체합니다. 경로 구분자(\ vs /)와 한글 파일명 인코딩(콘솔 코드페이지 UTF-8)에 특히 주의합니다.

예시

배치(.bat/.cmd):

bat
REM 기존: winscp.com ... "put file.zip /data/"
innorix scp file.zip web-01:/data/
if %ERRORLEVEL% NEQ 0 ( echo 전송 실패 & exit /b 1 )

PowerShell:

powershell
innorix scp .\report.pdf web-01:/incoming/
if ($LASTEXITCODE -ne 0) { Write-Error "전송 실패"; exit 1 }

예약 작업

설명

cron·systemd timer·작업 스케줄러는 대화형 세션이 없으므로, 래퍼 스크립트에서 비대화 로그인 후 전송합니다. 로그인 정보는 환경 변수/권한이 좁혀진 파일로 주입합니다.

예시

cron:

cron
# 기존: 0 2 * * *  rsync -az /data/ host:/backup/ ...
0 2 * * *  /opt/innorix/nightly-sync.sh >> /var/log/innorix-sync.log 2>&1

래퍼 스크립트:

bash
#!/usr/bin/env bash
set -euo pipefail
export INNORIX_EMAIL="svc-batch@example.com"
export INNORIX_PASSWORD="$(cat /etc/innorix/secret)"   # 파일 권한 600
innorix login
innorix rsync -a /data/ web-01:/backup/

처리 순서

  1. 배치 전용 계정 정보를 환경 변수/파일로 주입
  2. 래퍼에서 innorix login으로 비대화 로그인
  3. 세션으로 전송 실행

환경 변수

설명

대화형 입력이 불가능한 스크립트·예약 작업을 위해 로그인 정보를 환경 변수로 받아 비대화 로그인할 수 있습니다. 비밀번호를 명령 인자로 직접 넘기면 ps·히스토리에 노출되므로 환경 변수/권한이 좁혀진 파일로 주입합니다.

사용 변수

환경 변수용도
INNORIX_ENDPOINT기본 서버 엔드포인트(host:port)
INNORIX_EMAIL로그인 이메일
INNORIX_PASSWORD로그인 비밀번호(비대화 로그인용)
INNORIX_PROFILE기본 프로파일명

예시

bash
export INNORIX_EMAIL="svc-batch@example.com"
export INNORIX_PASSWORD="$(cat /etc/innorix/secret)"   # 파일 권한 600
innorix login
innorix rsync -a ./data/ web-01:/backup/

가능하면 사람 계정 대신 배치 전용 서비스 계정을 쓰고, 비밀번호는 시크릿 저장소에서 주입하며 로그 마스킹을 확인합니다.

검증·운영

전환한 작업을 실측·검증하고, 기존 도구와 병행 운영하며 무결성을 비교한 뒤 순차적으로 완전 전환합니다.

사전 검증

설명

완전 전환 전에 비운영 데이터로 실측합니다.

점검 항목

항목내용
모의 실행innorix rsync -n으로 실제 전송 없이 대상 목록 확인
소규모 실전송대용량 1건·다수 소파일·한글 파일명 포함 세트로 경로·인코딩 확인
성능 기준선기존 도구의 소요 시간·처리량을 기록해 비교 기준으로 사용

무결성 비교

설명

전송 결과가 원본과 동일한지 확인합니다. 파일 개수·총 바이트·개별 체크섬을 대조하고, 불일치 시 인코딩·심볼릭 링크·권한 매핑을 우선 의심합니다.

예시

bash
# 전송 시 검증 활성화
innorix rsync -a --verify sha256 ./data/ web-01:/backup/

# 사후 대조: 대상 체크섬 목록
innorix ls --checksum sha256 exa://web-01/backup/ > remote.sha

병행 운영

설명

일정 기간 기존 도구와 INNORIX CLI를 동시에 운영하며 결과를 비교합니다.

처리 순서

  1. 동일 작업을 양쪽으로 실행하되 INNORIX 측은 별도 대상 경로에 두고 무결성 비교로만 판정
  2. "검증 완료" 판정이 난 작업만 단독 전환
  3. 성능·오류율·재시도 빈도를 기록

오류·롤백

설명

전환한 작업은 기존 명령을 보관해 즉시 원복할 수 있게 합니다.

처리 순서

  1. 기존 명령을 주석/별도 스크립트로 보관해 롤백 경로 확보
  2. 실패 시 --resume 재개, 종료 코드 기반 자동 재시도 유지
  3. 무결성 비교 실패·성능 저하 시 롤백 후 원인 분석

운영 전환·모니터링

설명

저위험 작업부터 순차 전환하고, 전환 후 운영 안정성을 지속 관찰합니다.

처리 순서

  1. 단발 업로드·비핵심 백업부터 전환, 핵심 대용량 작업은 마지막에 전환
  2. 전환 완료 작업의 기존 도구 호출은 스케줄러에서 비활성화(삭제 아님 → 롤백 여지 유지)
  3. 성공/실패율·소요 시간·재개 빈도·인증 오류를 로그로 수집(--log-level로 상세도 조정)

빠른 대응표

기존INNORIX CLI
ftp host + put/getinnorix ftp <장비> (put/get만)
sftp user@hostinnorix sftp <장비>
sftp -b cmds.txtinnorix sftp <장비> -b cmds.txt
scp f user@host:/d/innorix scp f <장비>:/d/ (user@ 무시)
scp -r ...innorix scp -r ...
rsync -avz ...innorix rsync -a ... (v/z 등 생략)
scp -r hostA:/d/ hostB:/d/ (원격 간)innorix exa://siteA/d/ exa://siteB/d/
암호화 여부--encrypt true | false (기본 true)
-i keyfile / 비밀번호innorix login (이메일 + 비밀번호)
user@host:/path네이티브 exa://<장비>/path / 호환 <장비>:/path