전환 준비
기존 ftp / sftp / scp / rsync 명령과 이를 감싼 스크립트를 INNORIX CLI(콘솔 전송 클라이언트, Exacoola 백엔드 구동)로 옮기기 위한 사전 작업입니다. INNORIX CLI는 위 네 도구의 명령 구조를 그대로 수용하도록 설계되어, 대부분의 전환은 명령 앞에 innorix를 붙이고 대상 표기와 인증 방식만 교체하는 수준으로 끝납니다.
환경 조사
설명
전환 대상 작업을 먼저 목록화합니다. 지금 구조에서 실제로 의미가 있는 항목만 조사하면 됩니다. 인증 방식(SSH 키·.netrc·비밀번호 등)은 모두 계정 로그인으로 대체되므로 개별 조사 대상이 아닙니다.
조사 항목
| 항목 | 조사 내용 |
|---|---|
| 작업과 호출 위치 | 대화형 / 스크립트(셸·배치·PowerShell) / 예약 작업(cron·systemd timer·작업 스케줄러) |
| 원 명령과 대상 | 어떤 도구로 어떤 호스트에 전송하는지 |
| 대상 호스트 → 장비 | 기존 호스트를 INNORIX 장비(장비 ID·IP·이름)로 매핑 — 전환의 핵심 산출물 |
| 경로·인코딩 | 한글 파일명·대소문자 등 유지해야 할 경로 조건 |
예시
| 작업 | 원 명령 | 호출 위치 | 대상 호스트 → 장비 |
|---|---|---|---|
| nightly-report-sync | rsync -az ... | cron (매일 02:00) | backup.internal → web-01 |
지원 확인
설명
INNORIX CLI로 대체 가능한지 각 작업 단위로 확인합니다. 지원 여부가 애매한 작업은 "보류"로 표시해 병행 운영 단계에서 실측으로 판정합니다.
점검 기준
| 기준 | 확인 내용 |
|---|---|
| 프로토콜 커버리지 | 호환 서브명령(ftp/sftp/scp/rsync)으로 표현 가능한가 |
| 기능 대응 | 재귀 복사·대역폭 제한·재개·제외 패턴 등 대응이 존재하는가 |
| 미지원·주의 | 압축·권한 보존·미러 삭제(--delete)·심볼릭 링크·원격 셸 실행 등은 대안을 정함 |
CLI 준비
설명
INNORIX CLI를 설치하고 Exacoola 계정(이메일 + 비밀번호)으로 로그인해 세션을 만듭니다. 이후 명령은 저장된 세션으로 인증되므로 개별 명령에 인증 정보를 넣지 않습니다.
사용 옵션
| 옵션 | 설명 |
|---|---|
--endpoint <host:port> | 로그인 대상 Exacoola 서버 |
--email <email> | 로그인 이메일 |
--profile <name> | 저장된 서버·계정 프로파일 사용 |
예시
설치:
# Linux (.deb / .rpm)
sudo dpkg -i innorix-cli_x.y.z_amd64.deb
innorix --version
로그인 — 비밀번호는 대화형으로 입력받아 세션을 생성합니다.
innorix login --endpoint exa.example.com:443 --email hyunmin@example.com
# Password: ******** ← 화면·셸 히스토리에 남지 않음
프로파일 등록 — 서버·이메일만 저장되고 비밀번호는 저장되지 않습니다.
innorix profile add prod --endpoint exa.example.com:443 --email hyunmin@example.com
처리 순서
- 패키지 설치 후
innorix --version으로 확인 innorix login으로 이메일 입력·비밀번호 대화형 입력 → 세션 생성(~/.innorix/session)- (선택)
innorix profile add로 반복 사용 서버·계정 저장
장비 지정
설명
전송 대상 장비는 URI 형태 exa://<장비 선택자>/<경로>로 지정합니다. 장비 선택자는 장비 ID·IP·MAC 주소·장비 이름 중 하나를 씁니다. 명령을 실행하는 로컬 PC는 자신의 MAC 주소를 서버에 전달해 장비 ID를 자동으로 조회하므로, 로컬 측은 지정할 필요가 없고 명령에서 지정하는 장비는 항상 전송 상대(원격) 장비입니다.
사용 표기
| 방식 | 표기 | 예 |
|---|---|---|
| 장비 이름(기본) | <deviceName> 또는 name:<deviceName> | exa://web-01/data/ |
| 장비 ID | id:<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 모드 구분은 불필요합니다(항상 바이너리 안전 전송).
예시
# 기존
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
처리 순서
innorix ftp <장비>로 세션 시작(인증은 사전 로그인 세션 사용)put/get으로 파일 전송bye로 세션 종료
SFTP 전환
설명
sftp user@host 대신 innorix sftp <장비>로 세션을 엽니다. 대화형·배치(-b) 모두 대응하며, put/get/ls/mkdir/rm 구문은 대부분 그대로 재사용합니다.
예시
대화형:
# 기존
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
배치(비대화):
# 기존
sftp -b commands.txt alice@sftp.example.com
# INNORIX CLI
innorix sftp web-01 -b commands.txt
처리 순서
innorix sftp <장비>로 세션 시작(또는-b로 배치 파일 실행)put/get등 기존 구문으로 전송- 세션 종료
SCP 전환
설명
scp는 레거시 콜론 표기 <장비>:/path를 씁니다. scp의 user@host 자리에 장비 식별자(장비 ID·IP·이름, MAC은 하이픈형)만 넣고 옛 user@는 무시됩니다. -r(재귀)은 동일하게 유지하며, 접속 포트는 장비 경로가 아니라 로그인 시 서버 엔드포인트에 지정합니다.
예시
# 기존 — 업로드
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
처리 순서
- 원 명령의
user@host토큰을 장비 식별자로 교체 -r등 기존 플래그는 그대로 유지- 실행 → 사전 로그인 세션으로 인증되어 전송
rsync 전환
설명
rsync도 콜론 표기 <장비>:/path를 씁니다. -a(재귀)·--exclude·--bwlimit·--partial 등 자주 쓰는 옵션은 그대로 유지하되, -v·-z/-C·-p 등 INNORIX CLI가 다루지 않는 플래그는 뺍니다. 미러 삭제(--delete)는 현재 미지원입니다. 경로 끝 슬래시 규칙은 rsync와 동일하게 유지됩니다(후행 / 유무가 "내용 복사 vs 디렉터리 복사"를 결정).
예시
# 기존 — 압축 + 진행률
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/
처리 순서
user@host토큰을 장비 식별자로 교체-v·-z·-p등 미지원 플래그 제거, 나머지 유지- 실행
장비 간 직접 전송
설명
소스와 대상을 모두 원격 장비로 지정하면 자동으로 장비 간 직접 전송이 됩니다 — 데이터가 로컬을 거치지 않고 두 장비 사이에서 직접 이동합니다. 네이티브 전송 기본형을 사용하며, 의도를 명시적으로 강제할 때만 --remote-to-remote를 붙입니다.
예시
# 기존 — 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/
처리 순서
- 소스·대상을 모두
exa://<장비>/...로 지정 - 자동으로 로컬 미경유 장비 간 전송 수행
- (선택)
--remote-to-remote로 명시적 강제
암호화 전송
설명
전송 구간 암호화 여부는 모든 명령에 공통으로 적용되는 전역 옵션 --encrypt <true|false>로 지정합니다(미지정 시 기본 true). 전용 서브명령은 없으며, 신뢰된 사설망 내부에서 성능을 우선할 때만 false를 고려합니다.
사용 옵션
| 옵션 | 값 | 설명 |
|---|---|---|
--encrypt | true(기본) · false | 전송 구간 암호화 사용 여부 |
예시
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)를 점검합니다.
예시
#!/usr/bin/env bash
set -euo pipefail
# 기존: rsync -avz ./out/ alice@host:/var/www/out/
innorix rsync -a ./out/ web-01:/var/www/out/
처리 순서
- 전송 호출부를
innorix ...로 교체 - 종료 코드·출력 파싱 로직이 유지되는지 확인
- 비대화 실행 옵션 명시
배치·PowerShell
설명
Windows 배치·PowerShell도 호출부만 교체합니다. 경로 구분자(\ vs /)와 한글 파일명 인코딩(콘솔 코드페이지 UTF-8)에 특히 주의합니다.
예시
배치(.bat/.cmd):
REM 기존: winscp.com ... "put file.zip /data/"
innorix scp file.zip web-01:/data/
if %ERRORLEVEL% NEQ 0 ( echo 전송 실패 & exit /b 1 )
PowerShell:
innorix scp .\report.pdf web-01:/incoming/
if ($LASTEXITCODE -ne 0) { Write-Error "전송 실패"; exit 1 }
예약 작업
설명
cron·systemd timer·작업 스케줄러는 대화형 세션이 없으므로, 래퍼 스크립트에서 비대화 로그인 후 전송합니다. 로그인 정보는 환경 변수/권한이 좁혀진 파일로 주입합니다.
예시
cron:
# 기존: 0 2 * * * rsync -az /data/ host:/backup/ ...
0 2 * * * /opt/innorix/nightly-sync.sh >> /var/log/innorix-sync.log 2>&1
래퍼 스크립트:
#!/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/
처리 순서
- 배치 전용 계정 정보를 환경 변수/파일로 주입
- 래퍼에서
innorix login으로 비대화 로그인 - 세션으로 전송 실행
환경 변수
설명
대화형 입력이 불가능한 스크립트·예약 작업을 위해 로그인 정보를 환경 변수로 받아 비대화 로그인할 수 있습니다. 비밀번호를 명령 인자로 직접 넘기면 ps·히스토리에 노출되므로 환경 변수/권한이 좁혀진 파일로 주입합니다.
사용 변수
| 환경 변수 | 용도 |
|---|---|
INNORIX_ENDPOINT | 기본 서버 엔드포인트(host:port) |
INNORIX_EMAIL | 로그인 이메일 |
INNORIX_PASSWORD | 로그인 비밀번호(비대화 로그인용) |
INNORIX_PROFILE | 기본 프로파일명 |
예시
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건·다수 소파일·한글 파일명 포함 세트로 경로·인코딩 확인 |
| 성능 기준선 | 기존 도구의 소요 시간·처리량을 기록해 비교 기준으로 사용 |
무결성 비교
설명
전송 결과가 원본과 동일한지 확인합니다. 파일 개수·총 바이트·개별 체크섬을 대조하고, 불일치 시 인코딩·심볼릭 링크·권한 매핑을 우선 의심합니다.
예시
# 전송 시 검증 활성화
innorix rsync -a --verify sha256 ./data/ web-01:/backup/
# 사후 대조: 대상 체크섬 목록
innorix ls --checksum sha256 exa://web-01/backup/ > remote.sha
병행 운영
설명
일정 기간 기존 도구와 INNORIX CLI를 동시에 운영하며 결과를 비교합니다.
처리 순서
- 동일 작업을 양쪽으로 실행하되 INNORIX 측은 별도 대상 경로에 두고 무결성 비교로만 판정
- "검증 완료" 판정이 난 작업만 단독 전환
- 성능·오류율·재시도 빈도를 기록
오류·롤백
설명
전환한 작업은 기존 명령을 보관해 즉시 원복할 수 있게 합니다.
처리 순서
- 기존 명령을 주석/별도 스크립트로 보관해 롤백 경로 확보
- 실패 시
--resume재개, 종료 코드 기반 자동 재시도 유지 - 무결성 비교 실패·성능 저하 시 롤백 후 원인 분석
운영 전환·모니터링
설명
저위험 작업부터 순차 전환하고, 전환 후 운영 안정성을 지속 관찰합니다.
처리 순서
- 단발 업로드·비핵심 백업부터 전환, 핵심 대용량 작업은 마지막에 전환
- 전환 완료 작업의 기존 도구 호출은 스케줄러에서 비활성화(삭제 아님 → 롤백 여지 유지)
- 성공/실패율·소요 시간·재개 빈도·인증 오류를 로그로 수집(
--log-level로 상세도 조정)
빠른 대응표
| 기존 | INNORIX CLI |
|---|---|
ftp host + put/get | innorix ftp <장비> (put/get만) |
sftp user@host | innorix sftp <장비> |
sftp -b cmds.txt | innorix 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 |