시작하기#
기본 개념#
기존 Linux 또는 Unix 환경에서는 scp 명령을 셸 스크립트에 작성해 서버 사이로 파일을 전송하는 방식이 많이 사용됩니다.
예를 들어 데이터베이스 백업이 완료된 뒤 생성된 파일을 원격 서버로 복사하거나, 배치 작업에서 처리된 결과 파일을 다음 시스템의 지정 폴더로 전송할 수 있습니다.
일반적인 SCP 전송은 출발 파일과 목적지 서버, 접속 계정과 저장 경로를 명령에 직접 지정합니다. 셸 스크립트에서는 파일 생성이나 압축 작업을 실행한 뒤 scp 명령을 호출하고, 전송이 완료되면 다음 작업을 이어서 실행하는 구조로 구성할 수 있습니다.
파일 생성
│
▼
파일 압축
│
▼
SCP 실행
│
▼
원격 서버 저장
│
▼
다음 작업하지만 서버가 늘어나거나 전송 작업이 복잡해지면 출발지와 목적지, 접속 정보와 파일 경로가 여러 스크립트에 분산될 수 있습니다.
예를 들어 하나의 서버에서 생성된 파일을 여러 시스템으로 전송하거나, 여러 배치 스크립트가 각각 다른 대상 서버를 사용하는 경우 각 스크립트에서 전송 명령과 설정을 따로 관리하게 됩니다.
INNORIX CLI로 전환하면 기존 셸 스크립트가 수행하던 파일 생성과 압축, 데이터 처리와 같은 작업은 그대로 유지하면서 SCP가 담당하던 파일 전송 구간을 INNORIX CLI 실행으로 변경할 수 있습니다.
{
"name": "nightly-export",
"flowName": "nightly-export",
"transferType": "normal",
"timezone": "Asia/Seoul",
"details": [
{
"senderId": "<sourceDeviceId>",
"receiverId": "<targetDeviceId>",
"sourceItem": [{ "filePath": "C:/data/out", "isDir": true }],
"targetPath": "C:/incoming",
"step": 1,
"transferOptions": { "noSchedule": false, "target-action": "overwrite" }
}
],
"schedules": [
{ "type": "none", "startDateType": "now", "startDate": "2026-09-14T02:00:00.000Z", "timezone": "Asia/Seoul" }
],
"step": 1,
"isUpcoming": false
}
즉, 기존 자동화 구조를 모두 새로 구성하는 것이 아니라 기존 SCP 명령에 포함되어 있던 전송 정보를 분석하고, 동일한 파일 흐름을 CLI 기반 전송으로 변경하는 방식으로 전환할 수 있습니다.
전환 대상#
SCP 스크립트를 전환할 때는 먼저 전체 셸 스크립트에서 실제로 파일 전송을 담당하는 부분을 구분합니다.
하나의 스크립트에는 파일 생성부터 전송 후 정리 작업까지 여러 명령이 포함될 수 있습니다.
Daily Backup Script
│
├── Database Export
│
├── File Compress
│
├── File Rename
│
├── SCP Transfer ◀ 전환 대상
│
└── Archive이 경우 데이터베이스 백업이나 압축, 파일 이름 변경과 같은 기존 작업을 모두 변경할 필요는 없습니다.
실제 파일을 원격 서버로 전송하는 scp 실행 부분을 찾아 INNORIX CLI로 변경합니다.
| 기존 작업 | 전환 여부 | 처리 방식 |
|---|---|---|
| 파일 생성 | 유지 | 기존 셸 명령 사용 |
| 파일 압축 | 유지 | 기존 처리 로직 사용 |
| 파일 이름 변경 | 유지 | 기존 스크립트 사용 |
| 파일 전송 | 전환 | INNORIX CLI 실행 |
| 후속 작업 | 유지 또는 연결 | 전송 결과에 따라 실행 |
이렇게 구성하면 기존 자동화 환경을 유지하면서 파일 전송 방식을 단계적으로 변경할 수 있습니다.
IT 엔지니어#
명령 분석#
전환을 시작할 때는 기존 scp 명령에서 실제 파일 전송에 사용되는 값을 확인합니다.
SCP 명령에는 일반적으로 전송할 파일과 원격 서버, 대상 경로가 포함되며, 환경에 따라 사용자 계정이나 포트, 반복 처리 옵션 등이 함께 사용될 수 있습니다.
예를 들어 기존 스크립트의 전송 명령을 다음과 같이 구분할 수 있습니다.
scp 실행
│
├── Source
│ └── 전송할 파일과 경로
│
├── Connection
│ └── 대상 서버와 접속 정보
│
├── Target
│ └── 대상 서버의 저장 경로
│
└── Options
└── 기존 전송 조건전환 전에 다음 항목을 정리합니다.
| 확인 항목 | 확인 내용 |
|---|---|
| 출발지 | 전송할 파일 또는 디렉터리 |
| 파일 경로 | 파일이 생성되는 위치 |
| 목적지 | 파일을 받을 서버 |
| 저장 위치 | 대상 서버의 파일 경로 |
| 접속 정보 | 기존 서버 연결에 사용되는 정보 |
| 전송 범위 | 단일 파일 또는 여러 파일 |
| 실행 시점 | 수동, 배치 또는 반복 실행 |
| 기존 옵션 | 명령에 적용된 전송 조건 |
#!/bin/bash
SOURCE="/data/export/report.csv"
TARGET_USER="backup"
TARGET_HOST="192.168.10.20"
TARGET_PATH="/data/incoming/"
scp "$SOURCE" "$TARGET_USER@$TARGET_HOST:$TARGET_PATH"하나의 스크립트에 여러 SCP 명령이 포함되어 있다면 각각의 파일 흐름을 분리해서 확인합니다.
예를 들어 하나의 배치 작업에서 결과 파일을 서로 다른 서버로 전송하는 경우 다음과 같이 정리할 수 있습니다.
Batch Job
│
├── report.csv ───────▶ Analysis Server
│
├── backup.tar ───────▶ Backup Server
│
└── result.zip ───────▶ Archive Server이 경우 전송 대상별로 출발 파일과 목적지, 저장 경로를 구분한 뒤 각각의 전송 구성을 CLI 실행에 반영합니다.
전송 구성#
기존 SCP 명령에서 확인한 출발지와 목적지 정보를 기준으로 INNORIX CLI 전송 구성을 준비합니다.
Source에는 실제 전송할 파일이 있는 위치를 지정하고, Target에는 파일을 받을 시스템과 저장 위치를 연결합니다.
┌─────────────────────────┐
│ Source │
│ │
│ /data/export/ │
│ └── report.zip │
└────────────┬────────────┘
│
│ Transfer
▼
┌─────────────┐
│ INNORIX CLI │
└──────┬──────┘
│
▼
┌─────────────────────────┐
│ Target │
│ │
│ Remote Server │
│ /data/incoming/ │
└─────────────────────────┘innorix cp -r /data/export/ name:<targetDeviceId>:/data/incoming/기존 SCP 명령과 CLI 구성의 관계는 다음과 같이 정리할 수 있습니다.
| SCP에서 사용하던 정보 | CLI 전환 시 구성 |
|---|---|
| 출발 파일 | Source 파일 |
| 로컬 파일 경로 | Source 경로 |
| 원격 서버 | Target 시스템 |
| 대상 서버 경로 | Target 경로 |
| 접속 조건 | 연결 정보 |
| 전송 옵션 | CLI 실행 조건 |
전환 과정에서는 기존과 동일한 파일이 동일한 대상 위치에 도착하도록 구성하는 것이 기본입니다.
파일 조건#
SCP 스크립트에서는 특정 파일 하나만 전송할 수도 있고, 날짜별로 생성되는 여러 파일을 반복적으로 처리할 수도 있습니다.
따라서 기존 명령이 어떤 방식으로 파일을 선택하는지에 따라 CLI 전송 조건을 구성합니다.
예를 들어 다음과 같은 파일 흐름을 사용할 수 있습니다.
/data/export
│
├── backup_01.tar
├── backup_02.tar
├── report.csv
└── temp.log
│
▼
전송 대상 선택
│
┌──────┴──────┐
▼ ▼
조건 일치 조건 제외
│ │
▼ └── 유지
INNORIX CLI
│
▼
Target파일 조건을 구성할 때는 업무에 따라 다음 기준을 사용할 수 있습니다.
| 파일 유형 | 구성 방식 |
|---|---|
| 단일 결과 파일 | 지정된 파일만 전송 |
| 날짜별 파일 | 생성된 날짜 또는 이름 기준으로 선택 |
| 특정 확장자 | 필요한 파일 유형만 전송 |
| 여러 결과 파일 | 지정된 경로의 대상 파일을 함께 처리 |
| 반복 배치 | 기존 셸 스크립트의 실행 주기에 맞춰 연결 |
innorix cp /data/export/*.tar name:<targetDeviceId>:/data/incoming/이를 통해 기존 SCP 스크립트에서 처리하던 파일 범위를 유지하면서 필요한 파일만 전송할 수 있습니다.
스크립트 연결#
전송 구성이 완료되면 기존 셸 스크립트에서 scp를 실행하던 위치에 INNORIX CLI 실행을 연결합니다.
예를 들어 기존 스크립트가 파일을 생성하고 압축한 뒤 SCP를 실행했다면, 동일한 처리 순서에서 CLI를 실행하도록 변경할 수 있습니다.
기존 스크립트
File Generation
│
▼
File Processing
│
▼
scp
│
▼
Next Job전환 후
File Generation
│
▼
File Processing
│
▼
INNORIX CLI
│
▼
Transfer Result
│
▼
Next Job#!/bin/bash
# File Generation
./create_backup.sh
# File Processing
tar -czf /data/export/backup.tar.gz /data/export/backup
# INNORIX CLI Transfer
innorix cp /data/export/backup.tar.gz name:<targetDeviceId>:/data/incoming/
# Next Job
./cleanup.sh기존 스크립트는 파일 생성과 처리 순서를 그대로 유지하고, 파일 전송을 완료한 뒤 실행하던 후속 작업도 계속 연결할 수 있습니다.
예를 들어 다음과 같은 구조를 유지할 수 있습니다.
DB Export
│
▼
Create Backup File
│
▼
Compress
│
▼
INNORIX CLI Transfer
│
├───────────────┐
▼ ▼
Completed Review
│ │
▼ ▼
Cleanup Check & Retry이렇게 하면 기존 자동화 구조를 크게 변경하지 않고 파일 전송 방식을 교체할 수 있습니다.
결과 확인#
CLI 실행 후에는 전송 작업이 정상적으로 완료되었는지 확인하고, 기존 스크립트의 다음 작업을 실행할 수 있도록 결과를 연결합니다.
전송 결과에서는 파일 처리 상태와 전송 완료 여부를 확인하고, 필요한 경우 대상 시스템에 파일이 정상적으로 저장되었는지 함께 검증합니다.
innorix cp /data/export/backup.tar.gz name:<targetDeviceId>:/data/incoming/
if [ $? -eq 0 ]; then
echo "Transfer completed successfully."
./cleanup.sh
else
echo "Transfer failed."
exit 1
fi전환 후에는 다음과 같은 흐름으로 결과를 확인할 수 있습니다.
| 확인 단계 | 확인 내용 |
|---|---|
| 실행 시작 | CLI 전송 작업이 정상적으로 시작되었는지 확인 |
| 파일 처리 | 대상 파일이 모두 전송 대상에 포함되었는지 확인 |
| 전송 상태 | 진행 중 또는 완료 상태 확인 |
| 대상 확인 | 지정한 서버와 경로에 파일이 반영되었는지 확인 |
| 후속 작업 | 전송 결과에 따라 다음 작업 실행 |
| 재실행 | 확인이 필요한 경우 조건을 조정한 뒤 다시 실행 |
전송이 완료되면 기존 스크립트에서 사용하던 정리 작업이나 다음 배치 작업을 이어서 실행할 수 있습니다.
전환 검증#
운영 환경에 적용하기 전에는 기존 SCP 방식과 INNORIX CLI 방식이 동일한 파일 흐름을 처리하는지 확인합니다.
특히 여러 파일을 반복 전송하거나 여러 대상 서버를 사용하는 경우에는 파일 수와 저장 경로, 실행 결과를 함께 비교하는 것이 좋습니다.
Test Files
│
┌─────────┴─────────┐
▼ ▼
Existing SCP INNORIX CLI
│ │
└─────────┬─────────┘
▼
Result Check
│
┌────────────┼────────────┐
▼ ▼ ▼
File Count Target Path Transfer Status
│ │ │
└────────────┴────────────┘
│
▼
Apply검증할 때는 다음 항목을 확인합니다.
| 검증 항목 | 확인 내용 |
|---|---|
| 출발 파일 | 기존 SCP와 동일한 파일이 선택되는지 |
| 전송 범위 | 필요한 파일이 모두 포함되는지 |
| 대상 서버 | 지정한 시스템으로 전송되는지 |
| 저장 경로 | 기존과 동일한 위치에 반영되는지 |
| 파일 수 | 누락된 파일 없이 처리되는지 |
| 실행 결과 | 전송 완료 상태를 정상적으로 확인할 수 있는지 |
| 후속 작업 | 기존 배치의 다음 작업이 정상적으로 이어지는지 |
검증이 완료되면 기존 셸 스크립트에서 사용하던 SCP 명령을 INNORIX CLI 실행으로 변경해 운영 환경에 적용할 수 있습니다.
이 과정을 통해 기존 SCP 명령 분석 → 출발지와 목적지 구성 → 파일 조건 적용 → 기존 스크립트 연결 → 전송 결과 확인 → 테스트 검증까지 이어지는 전환 흐름을 구성할 수 있습니다.
기존 파일 생성과 처리, 배치 실행 구조를 유지하면서 실제 파일 전송 부분만 변경할 수 있으므로, 기존 자동화 환경을 모두 다시 작성하지 않고 단계적으로 CLI 기반 전송으로 전환할 수 있습니다.
개발자#
기존 SCP 명령과 스크립트를 INNORIX CLI 명령으로 전환하기
CLI를 설치·로그인한 뒤 scp 명령을 innorix scp로 바꾸고, 스크립트·예약 작업의 호출부만 교체합니다. 시작 전에 다음 항목을 준비합니다.
| 준비물 | 내용 |
|---|---|
| INNORIX CLI | 콘솔 전송 클라이언트 패키지(.deb/.rpm 등) |
| INNORIX 계정 | 로그인 이메일 + 비밀번호, 서버 엔드포인트(host:port) |
| 대상 장비 | 기존 scp 대상 호스트를 대체하는 장비 식별자(이름·ID·IP·MAC) |
| 경로·인코딩 | 한글 파일명·대소문자 등 유지해야 할 경로 조건 |
인증은 개별 명령이 아니라
innorix login으로 생성한 로컬 로그인 세션으로 처리됩니다. 비밀번호를 명령 인자로 넘기지 않습니다(히스토리·ps노출 방지). 장비 식별자·경로는 실제 값으로 바꿔 넣습니다.
CLI 준비와 로그인#
패키지를 설치하고 계정으로 로그인해 세션을 만듭니다. 비밀번호는 대화형으로 입력받아 화면·셸 히스토리에 남지 않습니다.
# install (Linux .deb example)
sudo dpkg -i innorix-cli_x.y.z_amd64.deb
innorix --version
# login — password entered interactively
innorix login --endpoint app.innorix.com:443 --email user@example.com
# Password: ********
# (optional) save a reusable server/account profile (password is not stored)
innorix profile add prod --endpoint app.innorix.com:443 --email user@example.comscp 명령 전환#
user@host 토큰을 장비 식별자로 바꾸고 -r 등 기존 플래그는 그대로 둡니다. 접속 정보는 명령에서 빠지고 사전 로그인 세션으로 인증됩니다.
# before — upload
scp report.pdf alice@host.example.com:/incoming/
# INNORIX CLI (device identifier in place of host; SSH username not used)
innorix scp report.pdf web-01:/incoming/
# before — recursive directory download
scp -r alice@host.example.com:/data/logs ./logs
# INNORIX CLI (-r kept)
innorix scp -r web-01:/data/logs ./logs
# when specifying by device ID or IP
innorix scp report.pdf id:DEV-1024:/incoming/
innorix scp report.pdf ip:192.168.0.10:/incoming/전송 구간 암호화는 전역 옵션 --encrypt <true|false>로 지정하며 기본값은 false입니다. 전송 후 무결성을 검증하려면 --verify <algo>(예: md5)를 붙입니다.
innorix scp -r ./data web-01:/backup/ --verify md5스크립트·예약 작업 전환#
셸 스크립트는 전송 호출부만 innorix ...로 교체합니다. 종료 코드($?) 기반 분기는 유지할 수 있지만, 기존 스크립트가 scp 출력 문자열을 파싱한다면 INNORIX CLI 출력 형식에 맞게 수정해야 합니다.
#!/usr/bin/env bash
set -euo pipefail
# before: scp -r ./out/ alice@host:/var/www/out/
innorix scp -r ./out/ web-01:/var/www/out/cron·스케줄러처럼 대화형 세션이 없는 경우, 래퍼 스크립트에서 환경 변수로 비대화 로그인한 뒤 전송합니다. 비밀번호는 권한을 좁힌 파일이나 시크릿 저장소에서 주입합니다.
#!/usr/bin/env bash
set -euo pipefail
export INNORIX_EMAIL="user@example.com"
export INNORIX_PASSWORD="$(cat /etc/innorix/secret)" # file mode 600
innorix login
innorix scp -r /data/ web-01:/backup/접속 정보는 장비 등록·로그인으로 이동
scp는 호출마다 계정·키·호스트를 지정하지만, INNORIX CLI에서는 계정 인증이innorix login세션으로, 대상 호스트가 등록된 장비 식별자로 옮겨집니다. 전환 후 스크립트에서 SSH 키·계정 문자열을 제거합니다.
미지원·주의 옵션
-C(압축)는 직접 대응이 없고,-p(권한·시간 보존)도 직접 대응이 없으므로 권한·타임스탬프 보존이 필요하면 별도로 확인합니다.-v(상세)는--log-level로 대체합니다. 기존scp처럼 대상 서버 주소·포트를 명령에 지정하지 않습니다 — 대상 접속 정보(주소·포트·인증)는 장비를 INNORIX에 등록할 때 미리 설정하고, 전송 명령에서는 등록된 장비 식별자만 지정합니다. SCP 범위를 벗어나는 옵션(대역폭 제한·재개 등)은rsync전환에서 다룹니다.
구현 결과#
이 레시피를 적용하면 다음 흐름으로 SCP 스크립트를 INNORIX CLI로 전환할 수 있습니다.
[기존] scp -r report/ alice@host:/incoming/
↓ innorix login 세션 · user@host → 장비 식별자
[전환] innorix scp -r report/ web-01:/incoming/
↓ 스크립트·예약 작업 호출부만 교체
접속 키·계정 없이 세션 인증으로 전송서버마다 흩어진 scp 명령과 스크립트를 innorix scp 명령으로 옮기고, SSH 키·계정 문자열을 스크립트에서 제거한 뒤 INNORIX 로그인 세션과 등록된 장비 식별자를 사용해 전송할 수 있습니다.