Featured image of post 파일 전송 위젯

파일 전송 위젯

이 기사는 내 오픈 소스 프로젝트 중 하나 인 파일 전송 위젯를 소개합니다.

경고: 이 기사는 기계 번역으로 생성되어 품질이 좋지 않거나 잘못된 정보로 이어질 수 있으므로 주의 깊게 읽으십시오!

기원

이 프로젝트는 지난 학기에 사물인터넷을 배우고 나서 재미삼아 작성한 프로젝트입니다 처음에는 그냥 파이썬으로 TCP접속과 패킷캡쳐 테스트를 동시에 해보고 싶었는데 PC가 2대라서 파일전송에 애를 먹고 있습니다 ;저는 SFTP 서버를 직접 설정하고 Resilio Sync, Syncthing 및 기타 파일 전송 및 동기화 도구를 사용했습니다. “작고 아름다운” 소프트웨어를 좋아하기 때문에 소프트웨어 성능, 효율성 및 리소스 사용에 대한 요구 사항 사용되는 노트북은 배터리 수명이 제한되어 있고 너무 많은 백그라운드 프로세스를 허용하지 않으므로 파일 전송 스크립트를 개발할 생각이 있습니다.

처음에는 기능이 매우 간단하여 한 번에 하나의 파일만 전송할 수 있었습니다. 나중에 전송 폴더를 추가하고 일부 프로그램 코드 최적화를 수행하여 학교에 돌아온 후 두 대의 컴퓨터에서 테스트하여 찾았습니다. 해결했습니다 데이터 스티키 패키지 문제(while 루프 사용), 전송 과정에서 파일이 손상되지 않을까 걱정되어 실시간 계산 및 검증 MD5를 추가했습니다(MD5는 그렇지 않지만 파일 전송이 우수하고 계산이 빠를 뿐만 아니라 해시 분포도 매우 좋습니다.) PC를 ​​캠퍼스 네트워크에 연결할 때 캠퍼스 네트워크가 안전하지 않은지 걱정됩니다. 데이터로 캡처될 수 있으므로 SSL(Secure Sockets Layer)(SSL)을 추가했습니다.

한 번은 대량의 파일을 전송할 때 컴퓨터가 절전 모드로 전환되어 파일을 다시 재전송해야 하므로 대역폭 낭비(LAN에는 아무것도 없지만)뿐만 아니라 시간도 낭비되므로 중단점 재전송과 유사한 기능. 나중에 코드 리팩토링해서 시스템 정보 비교, 네트워크 속도 테스트, 폴더 비교를 추가했습니다. ), 명령 원격 실행 및 기타 기능. 지난 이틀간 갑자기 이 작은 프로그램에 나도 모르게 이렇게 많은 기능이 있다는 것을 발견하고 오픈소스로 공유하게 되었습니다. 다음은 프로그램의 Readme이며 기사 끝에 창고 주소가 있습니다.

소개

파일 전송 도구에는 가벼움, 빠름, 안전 등을 제공하는 FTS(파일 전송 서버)FTC(파일 전송 클라이언트)가 포함되어 있습니다. -장치 파일 전송 스크립트.

기능

  1. 파일 전송
  • 개별 파일 또는 전체 폴더 전송
  • 보안 보장: 암호화 전송(Secure Sockets Layer Protocol 사용) 및 일반 텍스트 전송을 사용할 수 있습니다.
  • 정확성 보장: Hash 값을 통해 파일의 일관성을 검증하고 폴더 내 모든 파일이 올바르게 전송되는지 판단
  • 진행률 표시줄 표시: 파일 전송 진행률, 현재 네트워크 속도 및 남은 전송 시간을 실시간으로 표시
  • 같은 이름으로 파일명 변경, 중복전송 방지, 덮어쓰기 전송 3가지 방법
  1. ssh와 유사하게 원격으로 쉽게 명령을 실행하고 결과를 실시간으로 반환할 수 있는 명령줄
  2. 서비스 호스트를 자동으로 찾거나 연결 호스트를 수동으로 지정
  3. 두 폴더에 있는 파일의 동일 및 차이점과 같은 정보를 표시할 수 있는 폴더 비교
  4. 클라이언트 및 서버 시스템 상태 및 정보 보기
  5. 콘솔 및 파일에 로그를 실시간으로 출력하고 압축된 로그 파일을 자동으로 정리할 수 있습니다.
  6. 클라이언트와 서버 간의 네트워크 대역폭을 편리하게 테스트
  7. 보안을 강화하기 위해 서버에 대한 연결 비밀번호를 설정할 수 있습니다.
  8. 클라이언트와 서버의 클립보드 내용을 편리하게 동기화

특징

  1. 빠르게 시작, 실행 및 응답
  2. 즉시 사용할 수 있는 최소 기본 구성 원칙을 채택하고 직접 구성을 쉽게 수정할 수 있습니다.
  3. 두 호스트가 네트워크에 연결할 수 있는 한 LAN 및 공용 네트워크와 같은 모든 네트워크 환경에서 사용할 수 있습니다.
  4. 다중 스레드 전송, 빠른 전송 속도, 장비 제한으로 인해 실제 테스트는 최대 1000Mbps 대역폭까지 실행할 수 있으며 더 높은 대역폭에 대한 테스트는 없습니다.
  5. 런타임 시 메모리 사용량이 적고 리소스 점유를 최소화하기 위해 지연 로딩 모드가 채택되었습니다.
  6. 즉시 열고 닫고 이동하면 프로그램을 닫은 후 프로세스가 남지 않습니다.
  7. 현재 Windows 및 Linux 플랫폼과 호환 가능

선택하는 방법

  1. 보다 강력한 파일 전송 서비스를 원하시면 FTP 서버, 클라이언트(FileZilla, WinSCP 등)를 선택해주세요.
  2. 안정적인 파일 동기화 및 공유를 원하신다면 Resilio Sync, Syncthing 등의 사용을 권장합니다.
  3. 가끔 파일을 전송하는 경우/위 서비스의 백그라운드 저장소 및 리소스 점유가 마음에 들지 않는 경우/강력한 서비스가 필요하지 않은 경우/기능을 사용자 지정하려는 경우 파일 전송 도구를 선택하십시오.

설치 및 실행

‘FTS’는 기본적으로 포트 2023과 2021을 점유하고 FTC는 기본적으로 포트 2022를 점유합니다. 이 중 포트 2023은 ‘FTS’의 TCP 수신 포트로 사용되며, 2021, 2022는 서버와 클라이언트 간의 UDP 전송 인터페이스로 사용된다. 자세한 구성 정보를 확인하고 위의 구성을 수정할 수 있는 내용은 이 글의 마지막 부분에서 확인할 수 있습니다.

실행 프로그램 다운로드

  1. 우측 ‘해제’ 클릭
  2. 파일 전송 도구.zip 다운로드
  3. 폴더의 압축을 풀고 FTC.exe 또는 FTS.exe를 두 번 클릭하여 실행합니다.
  4. 또는 터미널에서 프로그램을 실행하여 .\FTC.exe [-h] [-t thread] [-host host] [-p]와 같은 프로그램 매개변수를 사용합니다.

Python 인터프리터로 실행

  1. 프로젝트 위치에 소스 코드 복제
  2. pip install -r requirements.txt를 사용하여 모든 종속성을 설치합니다.
  3. Python 인터프리터를 사용하여 스크립트를 실행합니다.

바로 가기 실행 방법

Windows를 예로 들면 FTS 및 FTC의 실행 명령을 배치 파일로 작성한 다음 배치 파일의 디렉토리를 환경 변수에 추가하여 간단히 FTS, FTC를 입력할 수 있습니다. 기본적이고 간단한 명령을 사용하여 프로그램을 실행해 봅시다.

예를 들어 FTS.bat 파일에 다음 명령을 작성할 수 있습니다.

1
2
@에코 끄기
"Python 인터프리터의 디렉토리"\Scripts\python.exe "프로젝트의 디렉토리"\FTS.py %1 %2 %3 %4 %5 %6

FTC.bat 파일에 다음 명령을 작성하십시오.

1
2
@에코 끄기
"Python 인터프리터의 디렉토리"\Scripts\python.exe "프로젝트의 디렉토리"\FTC.py %1 %2 %3 %4 %5 %6

그런 다음 배치 폴더를 환경 변수에 추가하고 마지막으로 터미널에 다음 명령을 입력하여 코드를 빠르게 실행합니다.

1
2
3
FTC.py [-h] [-t 스레드] [-호스트 호스트] [-p 암호] [--일반 텍스트]
또는
FTS.py [-h] [-d base_dir] [-p 암호] [--일반 텍스트] [--피하다]

위의 배치 파일에서 %1~%9는 프로그램이 전달한 매개변수를 나타냅니다(%0은 현재 경로를 나타냄). 터미널의 기본 작업 경로는 사용자 디렉토리(~)이며, 구성 파일을 수정해야 하는 경우 이 디렉토리에서 수정하십시오.

용법

공정거래위원회

FTC는 파일 및 지침을 보내는 클라이언트입니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
사용법: FTC.py [-h] [-t 스레드] [-호스트 호스트] [-p 암호] [--일반 텍스트]

파일 및 지침을 보내는 데 사용되는 파일 전송 클라이언트.

선택적 인수:
   -h, --help 이 도움말 메시지를 표시하고 종료
   -t 스레드 스레드(기본값: 8)
   -호스트 호스트 대상 호스트 이름 또는 IP 주소
   -p 비밀번호, --password 비밀번호
                         암호를 사용하여 호스트를 연결하십시오.
   --plaintext 일반 텍스트 전송 사용(기본값: ssl 사용)

매개변수 설명

-t: 스레드 수를 지정하며 기본값은 논리 프로세서 수입니다.

-host: 서버 호스트 이름(호스트 이름 또는 ip) 및 포트 번호(선택 사항)를 명시적으로 지정합니다. 이 옵션을 사용하지 않으면 클라이언트는 동일한 서브넷에서 서버를 자동으로 검색합니다.

-p: 서버에 대한 연결 암호를 명시적으로 지정합니다(서버에는 기본적으로 암호가 없음).

--plaintext: 일반 텍스트 전송 데이터를 명시적으로 지정하여 서버에서도 일반 텍스트 전송을 사용하도록 요구합니다.

명령 설명

정상적인 연결 후 다음 명령을 입력하십시오.

  1. 파일(폴더) 경로를 입력하면 파일(폴더)이 전송됩니다.
  2. sysinfo를 입력하면 양 당사자의 시스템 정보가 표시됩니다.
  3. speedtest n을 입력하면 네트워크 속도가 테스트됩니다. 여기서 n은 이 테스트의 데이터 양(MB)입니다. 컴퓨터 네트워킹에서 1GB = 1000MB = 1000000KB입니다.
  4. compare local_dir dest_dir을 입력하여 로컬 폴더와 서버 폴더의 파일 간의 차이를 비교합니다.
  5. ‘clip pull/push’ 또는 ‘clip get/send’를 입력하여 클라이언트와 서버 클립보드 콘텐츠를 동기화합니다.
  6. 다른 내용이 입력되면 서버가 실행하라는 명령으로 사용되며 그 결과는 실시간으로 반환된다.

스크린샷 실행

다음은 동일한 호스트에서 실행되는 스크린샷입니다.

프로그램 시작

시작

파일 전송 파일

실행 명령: sysinfo

sysinfo

명령 실행: speedtest

speedtest

명령 실행: 비교

비교

명령 실행: 클립

클립

명령줄 명령 실행

명령

FTS

‘FTS’는 파일을 수신 및 저장하고 클라이언트가 보낸 명령을 실행하는 데 사용되는 서버 측입니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
사용법: FTS.py [-h] [-d base_dir] [-p 암호] [--일반 텍스트] [--피하다]

파일 및 실행 명령을 수신하는 데 사용되는 파일 전송 서버.

선택적 인수:
   -h, --help 이 도움말 메시지를 표시하고 종료
   -d base_dir, --dest base_dir
                         파일 저장 위치(기본값: C:\Users\admin/Desktop)
   -p 비밀번호, --password 비밀번호
                         호스트의 비밀번호를 설정합니다.
   --plaintext 일반 텍스트 전송 사용(기본값: ssl 사용)
   --avoid 파일 이름이 반복되면 전송을 계속하지 않습니다.

매개변수 설명

-d, --dest: 파일 수신 위치를 명시적으로 지정합니다. 기본값은 구성 항목 “platform_default_path"의 값입니다(Windows 플랫폼 기본값은 desktop임).

-p, --password: 악의적인 연결을 방지하기 위해 서버의 암호를 설정합니다.

--plaintext: 일반 텍스트로 데이터 전송을 명시적으로 지정하고 기본적으로 SSL 암호화 전송을 사용합니다.

--avoid: 활성화하면 디렉토리에 이미 같은 이름의 파일이 있는 경우 두 가지 경우가 있는데 수신측 파일의 크기가 송신측보다 크거나 같으면 ** 차단** 파일 전송, 그렇지 않으면 수신 및 *덮어쓰기 *이 파일; 이 기능은 주로 한 번에 많은 수의 파일이 중단된 후 재전송에 사용되며 중단점 재전송과 유사하므로 **주의해서 사용하십시오. ** 다른 경우. 활성화하지 않은 경우 기존 파일명이 a.txt인 경우 a(1).txt, a(2).txt 순으로 파일명이 지정됩니다.

스크린샷 실행

FTS

구성

구성 항목은 구성 파일 config.txt에 있습니다. 구성 파일이 없으면 프로그램이 자동으로 기본 구성 파일을 만듭니다.

Main 프로그램의 주요 구성

windows_default_path: Windows 플랫폼에서 기본 파일 수신 위치

linux_default_path: Linux 플랫폼에서 기본 파일 수신 위치

cert_dir: 인증서 파일의 저장 위치

로그 관련 설정

windows_log_dir: Windows 플랫폼에서 기본 로그 파일 저장 위치

linux_log_dir: Linux 플랫폼에서 기본 로그 파일 저장 위치

log_file_archive_count: 로그 파일 수가 이 크기를 초과할 때 아카이브

log_file_archive_size: 로그 파일의 총 크기(바이트)가 이 크기를 초과할 때 아카이브

포트 구성 포트 관련 내용

server_port: 서버 TCP 수신 포트

server_signal_port: 서버 UDP 수신 포트

client_signal_port: 클라이언트 UDP 수신 포트

JimmyStack 테마 사용 중 & Built with Hugo