sftp
SFTP 서버에서 파일 시스템을 탐색하거나, 쿼리 결과를 파일로 전송할 수 있습니다.
문법
파일 목록 조회
파일 내용 읽기
특정한 레코드의 필드 값을 텍스트, CSV, TSV, JSON 형식으로 파일 전송
PROFILE
- SFTP 연결에 사용할 프로파일을 지정합니다.
* (ENT, STD) 시스템 설정 > 접속 프로파일
* (SNR) 시스템 > 접속 프로파일
{cat|ls|put}
- sftp 세션에서 실행할 명령어를 입력합니다.
- cat: 서버에서 PATH로 지정된 경로의 파일 내용을 읽어와 line 필드에 출력합니다.
- ls: 서버에서 PATH로 지정된 경로의 파일 목록을 보여줍니다.
- put: 입력으로 전달받은 레코드나 fields 옵션으로 지정된 필드의 값들을 SFTP 서버에 파일로 전송합니다. 파일은 PATH로 지정된 경로에 생성됩니다.
- 텍스트 형식일 때 필드가 여러 개이면 탭으로 구분하고, 빈 필드는 '-'으로 표시
- CSV 형식일 때 첫번째 줄은 필드 이름 목록이며, 빈 필드는 빈 문자열로 표시
append=BOOL
- SFTP 서버에 데이터를 전송할 때 사용할 수 있는 옵션으로, PATH로 지정된 파일이 있으면 파일에 이어서 씁니다. overwrite 옵션과 함께 사용할 수 없습니다.
encoding=CHARSET
- 파일 인코딩 (기본값:
utf-8
). 다음 문서에 등록된 Preferred MIME Name이나 Aliases를 사용합니다: https://www.iana.org/assignments/character-sets/character-sets.xhtml fields=FIELD[,FIELD,...]
- SFTP 서버에 데이터를 전송할 때 사용할 수 있는 옵션으로, 전송 대상 필드를 지정합니다. 여러 필드를 선택하려면 구분자로 쉼표(,)를 사용합니다.
- 텍스트 또는 CSV 파일로 전송할 때 이 옵션을 생략하면 line 필드를 출력합니다.
- JSON 파일로 전송할 때 이 옵션을 생략하면 모든 필드를 출력합니다.
format={csv|json|text|tsv}
- 전송할 파일 형식을 지정합니다.
limit=INT
- SFTP 서버에서 파일을 읽어올 때 출력할 행의 개수를 입력합니다. 기본값은 무제한입니다.
multisession=t
- 멀티세션을 사용할지 여부를 불린 값으로 지정합니다. 지정하지 않을 경우 사용하지 않습니다. 추가 세션을 여는데 시간이 더 걸려 오히려 사용하지 않을 때보다 성능이 떨어질 수 있어, 테스트 후 사용 여부를 결정하는 것이 바람직합니다.
maxsession=INT
- 멀티세션을 사용할 때, 최대로 열 세션 수를 지정합니다. 멀티세션 사용 여부를 체크하지 않고 이 옵션을 지정할 경우 쿼리가 실패합니다. 아무리 큰 수를 지정해도 접속 대상의 sshd_config에서 지정한 MaxSessions 수 만큼 세션이 열립니다.
offset=INT
- SFTP 서버에서 파일을 읽을 때 건너뛸 행 개수를 입력합니다. 기본값은 0입니다.
overwrite=BOOL
- SFTP 서버에 데이터를 전송할 때 사용할 수 있는 옵션으로, PATH로 지정된 파일이 있으면 파일을 무시하고 덮어씁니다. append 옵션과 함께 사용할 수 없습니다.
partition=BOOL
t
로 설정하면 매크로를 이용해 디렉터리 경로를 지정할 수 있습니다. 매크로를 이용하면 디렉터리나 파일 이름을 시간에 따라 변경합니다.PATH
- 디렉터리 또는 파일의 절대 경로를 입력합니다. 전송할 때에는 디렉터리 경로가 아니라 단일 파일 경로를 입력해야 합니다. 파일을 조회할 때에 파일 경로에 와일드카드(*)를 사용하면 특정 문자열 패턴을 포함한 모든 파일을 한 번에 조회할 수 있습니다.
설명
partition 옵션을 t로 설정하면 매크로를 이용해 시간에 따라 디렉터리 및 파일 경로를 변경하도록 경로를 지정할 수 있습니다. 파티션 옵션을 지정하고 경로에 매크로를 사용하지 않으면 쿼리가 실패합니다.
사용할 수 있는 매크로는 {logtime:FMT}
과 {now:FMT}
가 있습니다.
- {logtime:FMT}
: 로그발생 시각을 기준으로 디렉터리나 파일에 이름 부여
- {now:FMT}
: 현재 시각을 기준으로 디렉터리나 파일에 이름 부여
매크로는 중괄호 쌍({ })으로 감싸 입력합니다. 입력 예시는 사용 예 6번을 참조하십시오.
사용 예
-
srv 프로파일로 SSH 접속하여 원격 디렉터리 파일 조회
sftp srv ls /
조회 결과 필드들은 각각 아래의 의미를 가집니다:
- type(문자열): 디렉터리일 때 dir, 파일일 때 file
- is_link(불리언): 심볼릭 링크 여부
- name(문자열): 파일 이름
- file_size(정수): 파일 용량, 디렉터리일 때 0
- modified_at(날짜): 마지막 수정 시각
- uid(정수): 소유자 ID
- gid(정수): 소유 그룹 ID
- perms(문자열): 파일 권한 정보
-
srv 프로파일로 접속하여 /logpresso.sh 파일의 첫 5행을 조회
sftp srv cat limit=5 /logpresso.sh
-
JMX 클래스 로딩 로그 중 UnloadedClassCount와 LoadedClassCount만 /tmp/class.txt 파일에 출력
table classloading | sftp srv put fields=UnloadedClassCount,LoadedClassCount /tmp/class.txt
-
JMX 클래스 로딩 로그를 /tmp/class.json 파일로 출력
table classloading | sftp srv put format=json /tmp/class.json
-
JMX 클래스 로딩 로그 중 LoadedClassCount, UnloadedClassCount, TotalLoadedClassCount 항목을 /tmp/class.csv 파일로 출력
table classloading | sftp srv put format=csv fields=LoadedClassCount,UnloadedClassCount,TotalLoadedClassCount /tmp/class.csv
-
디렉토리를 로그 시간 기준 년월일로, 파일 이름을 현재시간 기준 시분으로 JMX 클래스로딩 로그 중 LoadedClassCount, UnloadedClassCount, TotalLoadedClassCount 항목을 JSON 파일로 출력
table classloading | sftp srv put format=json partition=t fields=LoadedClassCount,UnloadedClassCount,TotalLoadedClassCount {logtime:/yyyy/MM/dd/}{now:HHmm}.txt