sftp 로 파일 업로드를 주기적으로 하는 방법 질문

안녕하세요. sftp 서버로 파일 업로드를 주기적으로 할 때 어떤 방법으로 해야 할지 궁금해서 질문 남깁니다.

우선 어떤 상황인지 알려드리면, A 라는 REST API 서버가 존재하고, 이 서버로 파일들이 전송되어 와서 저장이 됩니다. 그리고 A 서버에 있는 파일들을 B 라는 SFTP 서버로 특정 시간마다 업로드 해줘야 합니다. B 라는 SFTP 서버로 접근하기 위한 id와 password 는 B 의 API 서버로 요청해서 받은 후에 SFTP 서버로 접속해서 파일을 업로드 해야합니다.

이런 경우 A 라는 REST API 서버에서 B서버로 특정 시간마다 파일 업로드 하는 내용을 TImer? 로 구현해야하는건지… 아니면 윈도우 스케쥴러를 이용해서 배치 파일을 실행해야하는건지… 궁금합니다

만약 배치 파일을 만들어서 사용할 경우 이 배치 파일에 B 의 API 서버로 post 요청해서 sftp 서버의 id와 password를 받을 수 있는지도 궁금합니다…

3 Likes

말씀하신 내용은 그냥 구현하는 방법에 대한 차이이며, 정답이 없습니다.

하고 싶으신 방법으로 하시면 될 것 같습니다.

그것이 익숙한 방법이던, 새로운 시도이던 어차피 같은 자동화를 달성하고 있습니다.

그리고 구현 방법에 따라 발생할 버그나 유지보수에 대해 차이가 있을 수 있겠지만 별 것 아닌 문제 같습니다.

만약 추천을 원하신다면 언급하신

  1. 프로세스가 항시 떠있으면서 Timer를 이용해 http로 호출
  2. Windows 작업 스케쥴러를 이용해서 그때 그때 프로세스를 실행하고 프로세스 종료

중 에서는 1번을 선택하겠습니다.

프로세스를 끄고 켜는 것만으로 이미 명시적이기 때문입니다.
다만 이렇게 하시려면 Quartz.NET이나 HangFire 같은 In Process 작업 스케쥴러를 쓰시는게 좋을 것 같습니다.

Windows 작업 스케쥴러를 선택하지 않은 것은, 우리가 Database에서 Trigger를 잘 사용하지 않는 이유와 유사합니다. 어디서 발생하는지 한 눈에 알기가 어렵기 때문입니다. 나 말고 다른 사람이 와서 유지보수를 하게 될 경우 문서로 ‘Windows 작업 스케쥴러에서 이 프로그램을 호출합니다.’ 라는 안내가 없다면 어려울 것 같다는 저의 상대적 뇌피셜입니다.

4 Likes

답변 감사합니다! 추천 해주신대로 한번 해봐야겠어요 ㅎ 작업스케쥴러로 하면 유지보수 문서를 따로 만들어야하니…

3 Likes