실제 컴퓨터의 폴더에없는 SFTP에서 데이터를 빠르게 다운로드 할 수 있는지 확인하고 싶습니다. 문제는 이러한 파일이 5 분 간격 스냅 샷이며 현재 SFTP 폴더에 수천 개가 있습니다 (말 그대로 2016 년 8 월 이후 5 분마다).SFTP에서 파일을 다운로드하는 코드 속도 향상
클라이언트에게 SFTP를 정리하고 이전 데이터를 제거 할 수 있는지 묻는 계획을 세우지 만, 그 동안에는 다운로드 코드를 개선하고 싶습니다.
기본적으로 SFTP의 각 폴더를 확인한 다음 내 컴퓨터에서 해당 폴더를 확인합니다. 파일이 존재하지 않으면 다운로드합니다 (지금 Windows 10을 사용 중입니다). 모든 파일을 나열하고 존재 여부를 확인하는 데에도 오랜 시간이 걸립니다. 폴더 중 하나만 1400 초가 걸리므로 5 분마다이 파일을 실행할 수 없습니다.
파일 이름-2016-12-06-08-55-05 - 투 - 09-00-17.csv
: 여기
with pysftp.Connection(host, username, password, port, cnopts) as sftp:
logger.info('Server connected')
for folder in folders:
sftp.chdir(folder)
logger.info('Downloading data from the {} folder'.format(folder))
for file in sftp.listdir():
if file not in os.listdir(os.path.join(path, folder.lower())) and sftp.isfile(file):
logger.info('Downloading: {}'.format(file))
os.chdir(os.path.join(path, folder.lower()))
sftp.get(file, preserve_mtime=True)
는 폴더 중 하나에 대한 정확한 파일 이름 구조 이 폴더 (7 개 폴더 중 하나)에 30,000 개의 파일이 있습니다 (데이터 129MB 만 해당).
일관된 폴더 구조/명명 규칙이 있습니까? 찾고있는 대신 저장소 형식/명명 규칙을 기반으로 다운로드하려고 시도했다고 가정 할 수 있습니다. –
폴더 구조는 정적이지만 이름은 매우 다릅니다. 파일 이름은 filename-2016-12-07-20-15-04-to-2016-12-07-20-20-09입니다. 초가 가변적 인 것 같습니다. 자, 좀 더 자세히 살펴 보겠습니다. 초를 대체하기 위해 glob 및 와일드 카드를 사용할 수 있습니다. – trench
질문에 구조/명명 규칙의 예를 제공해 주시겠습니까? 그것은 누군가가 더 나은 답을 줄 수 있도록 도와줍니다. 아, 그렇습니다. 시간이 너무 길어집니다. –