sftp

SFTP 서버에서 파일 시스템을 탐색하거나, 쿼리 결과를 파일로 전송할 수 있습니다.

문법

파일 목록 조회

sftp PROFILE ls PATH

파일 내용 읽기

sftp PROFILE cat [encoding=CHARSET] [limit=INT] [offset=INT] PATH

특정한 레코드의 필드 값을 텍스트, CSV, TSV, JSON 형식으로 파일 전송

sftp PROFILE put [append=t]|[overwrite=t] [encoding=CHARSET] [fields=FIELD_1[,FIELD_2,...]] [format={csv|json|text|tsv}] [multisession=t maxsession=INT] [partition=t] PATH
PROFILE
SFTP 연결에 사용할 프로파일을 지정합니다.
Note
프로파일은 웹 콘솔에서 구성할 수 있습니다. ENT-3.10.2009.0. SNR-3.1.2008.0 배포 버전부터 SSH 프로파일이 접속 프로파일에 통합되었습니다.
* (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 파일로 전송할 때 이 옵션을 생략하면 모든 필드를 출력합니다.
Caution
appent=t 옵션을 사용할 때 데이터의 일관성을 유지할 수 있도록 항상 fields 옵션의 목록 순서를 동일하게 유지해주세요.
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번을 참조하십시오.

사용 예

  1. srv 프로파일로 SSH 접속하여 원격 디렉터리 파일 조회

    sftp srv ls /
    

    조회 결과 필드들은 각각 아래의 의미를 가집니다:

    • type(문자열): 디렉터리일 때 dir, 파일일 때 file
    • is_link(불리언): 심볼릭 링크 여부
    • name(문자열): 파일 이름
    • file_size(정수): 파일 용량, 디렉터리일 때 0
    • modified_at(날짜): 마지막 수정 시각
    • uid(정수): 소유자 ID
    • gid(정수): 소유 그룹 ID
    • perms(문자열): 파일 권한 정보
  2. srv 프로파일로 접속하여 /logpresso.sh 파일의 첫 5행을 조회

    sftp srv cat limit=5 /logpresso.sh
    
  3. JMX 클래스 로딩 로그 중 UnloadedClassCount와 LoadedClassCount만 /tmp/class.txt 파일에 출력

    table classloading 
    | sftp srv put
    fields=UnloadedClassCount,LoadedClassCount
    /tmp/class.txt
    
  4. JMX 클래스 로딩 로그를 /tmp/class.json 파일로 출력

    table classloading | sftp srv put format=json /tmp/class.json
    
  5. JMX 클래스 로딩 로그 중 LoadedClassCount, UnloadedClassCount, TotalLoadedClassCount 항목을 /tmp/class.csv 파일로 출력

    table classloading 
    | sftp srv put
    format=csv
    fields=LoadedClassCount,UnloadedClassCount,TotalLoadedClassCount
    /tmp/class.csv
    
  6. 디렉토리를 로그 시간 기준 년월일로, 파일 이름을 현재시간 기준 시분으로 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