Featured image of post ファイル転送ウィジェット

ファイル転送ウィジェット

この記事では、私のオープンソースプロジェクトの1つを紹介します。

警告: この記事は機械翻訳されているため、品質が低かったり不正確な情報が含まれる可能性があります。よくお読みください。

このプロジェクトは、先学期にインターネットの勉強を終えた後に作成して実行しました。最初は、Python を使用して TCP 接続とパケット キャプチャのテストを同時に実行したいと思っていました。PC が 2 台あるため、ファイル転送と同期に苦労しています。 ;私は 2 台のコンピュータ間で問題が発生しました。;私は自分で SFTP サーバーをセットアップし、「Resilio Sync」、「Syncthing」、その他のファイル転送および同期ツールを使用しました。私は「小さくて美しい」ソフトウェアが好きなので、非常に高い要件を持っています。ソフトウェアのパフォーマンス、効率、およびリソースの使用量。使用しているノートブックはバッテリー寿命が限られており、バックグラウンド プロセスがあまり許可されないため、ところでファイル転送スクリプトを開発するというアイデアがあります。

当初は一度に 1 つのファイルしか転送できない非常にシンプルな機能でしたが、その後、転送フォルダーの追加やプログラム コードの最適化が行われ、学校に戻ってから 2 台のコンピューターでテストしたところ、 *データスティッキーパッケージ**の問題(whileループを使用); 送信処理中にファイルが破損していないか心配だったので、リアルタイム計算と検証用のMD5を追加しました(MD5はそうではありませんが)安全です。ファイル転送は優れており、計算が速いだけでなく、ハッシュの配布も非常に優れています); PC をキャンパス ネットワークに接続すると、キャンパス ネットワークが安全ではないのではないかと心配になりますデータによってキャプチャされる可能性があるため、Secure Sockets Layer (SSL) を追加しました。

かつて、大量のファイルを転送するときにコンピュータがスリープ状態になり、その結果ファイルを再度再送信する必要が生じ、帯域幅が無駄になるだけでなく(LAN には何もありませんが)、時間も無駄になりました。ブレークポイントの再送信と同様の機能。 ちなみに、後でコードをリファクタリングし、システム情報の比較ネットワーク速度テストフォルダーの比較を追加しました(転送が完了した後、 2 つのフォルダーの内容。)、コマンドのリモート実行、およびその他の機能。 この 2 日間で、この小さなプログラムが知らず知らずのうちに非常に多くの機能を備えていることに突然気づき、オープンソースとして共有しました。 以下はプログラムの Readme で、記事の最後に倉庫のアドレスが記載されています。

序章

「ファイル転送ツール」には、軽量高速安全な「FTS (ファイル転送サーバー)」と「FTC (ファイル転送クライアント)」が含まれています。 -device ファイル転送スクリプト。

関数

  1. ファイル転送
  • 個々のファイルまたはフォルダー全体を転送
  • セキュリティ保証:暗号化通信(Secure Sockets Layer Protocol使用)および平文通信が可能
  • 正確性保証:ハッシュ値を通じてファイルの一貫性を検証し、フォルダー内のすべてのファイルが正しく送信されたかどうかを判断します
  • プログレスバー表示: ファイル転送の進行状況、現在のネットワーク速度、残りの転送時間をリアルタイムで表示します。
  • 同名ファイルのリネーム、重複転送回避、上書き転送の3つの方法
  1. コマンド ライン。ssh と同様に、コマンドをリモートで簡単に実行し、リアルタイムで結果を返すことができます。
  2. サービス ホストを自動的に検索するか、接続ホストを手動で指定します
  3. 2つのフォルダ内のファイルの同一・相違などの情報を表示できるフォルダ比較
  4. クライアントとサーバーのシステムステータスと情報を表示する
  5. ログをコンソールやファイルにリアルタイムに出力し、圧縮されたログファイルを自動的に整理できます
  6. クライアントとサーバー間のネットワーク帯域幅を簡単にテストできます
  7. サーバーへの接続パスワードを設定してセキュリティを強化できます
  8. クライアントとサーバーのクリップボードの内容を簡単に同期します

特徴

  1. 迅速な起動、実行、応答
  2. 最小限のデフォルト構成原則を採用し、すぐに使用でき、構成を自分で簡単に変更できます。
  3. 2台のホストがネットワークに接続できれば、LANや公衆回線など、どのようなネットワーク環境でも利用可能
  4. マルチスレッド伝送、高速伝送速度、実際のテストは最大 1000Mbps の帯域幅で実行できます。機器の制限により、それ以上の帯域幅のテストはありません。
  5. 実行時のメモリ使用量が少なく、リソースの占有を最小限に抑えるために遅延読み込みモードが採用されています。
  6. 瞬時に開いて閉じて終了し、プログラムを閉じた後にプロセスは残りません。
  7. 現在、Windows および Linux プラットフォームと互換性があります

選び方

  1. より強力なファイル転送サービスが必要な場合は、FTP サーバー、クライアント (「FileZilla」、「WinSCP」など) を選択してください。
  2. 安定したファイルの同期と共有が必要な場合は、Resilio SyncSyncthingなどを使用することをお勧めします。
  3. ファイルを時々しか転送しない/上記のサービスのバックグラウンド ストレージとリソース占有が気に入らない/そのような強力なサービスは必要ない/機能をカスタマイズしたい場合は、「ファイル転送ツール」を選択してください

インストールして実行する

「FTS」はデフォルトでポート 2023 と 2021 を占有し、FTC はデフォルトでポート 2022 を占有します。 このうち、ポート2023は「FTS」のTCPリスニングポートとして使用され、2021と2022はサーバーとクライアント間のUDP送信インターフェースとして使用される。 この記事の最後で、詳細な構成情報を確認し、上記の構成を変更できます。

実行可能プログラムをダウンロードする

  1. 右側の「リリース」をクリックします 2.「ファイル転送ツール.zip」をダウンロードします。
  2. フォルダーを解凍し、「FTC.exe」または「FTS.exe」をダブルクリックして実行します。
  3. または、端末でプログラムを実行して、「.\FTC.exe [-h] [-t thread] [-host host] [-p]」などのプログラム パラメータを使用します。

Python インタープリターを使用して実行する

  1. ソースコードをプロジェクトの場所に複製します。 2.「pip install -rrequirements.txt」を使用してすべての依存関係をインストールします。
  2. Python インタープリターを使用してスクリプトを実行します。

ショートカットの実行方法

Windows を例に挙げると、FTS と FTC の実行コマンドをバッチ ファイルとして記述し、そのバッチ ファイルのディレクトリを環境変数に追加することで、「FTS , FTC` と入力するだけで済みます」 デフォルトの最も単純なコマンドを使用してプログラムを実行してみましょう。

たとえば、次のコマンドをファイル FTS.bat に書き込むことができます。

1
2
@echo off
"The dir of your Python interpreter"\Scripts\python.exe "The dir of your project"\FTS.py %1 %2 %3 %4 %5 %6

次のコマンドをファイル「FTC.bat」に書き込みます。

1
2
@echo off
"The dir of your Python interpreter"\Scripts\python.exe "The dir of your project"\FTC.py %1 %2 %3 %4 %5 %6

次に、バッチ フォルダーを環境変数に追加し、最後にターミナルに次のコマンドを入力してコードをすぐに実行します。

1
2
3
FTC.py [-h] [-t thread] [-host host] [-p password] [--plaintext]
or
FTS.py [-h] [-d base_dir] [-p password] [--plaintext] [--avoid]

上記のバッチ ファイルでは、%1~%9 はプログラムによって渡されるパラメータを表します (%0 は現在のパスを表します) ターミナルのデフォルトの作業パスはユーザー ディレクトリ (~) であることに注意してください。設定ファイルを変更する必要がある場合は、このディレクトリ内で変更してください。

使用法

FTC

FTC は、ファイルと指示を送信するためのクライアントです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
usage: FTC.py [-h] [-t thread] [-host host] [-p password] [--plaintext]

File Transfer Client, used to SEND files and instructions.

optional arguments:
   -h, --help show this help message and exit
   -t thread threads (default: 8)
   -host host destination hostname or ip address
   -p password, --password password
                         Use a password to connect host.
   --plaintext Use plaintext transfer (default: use ssl)

パラメータの説明

-t: スレッドの数を指定します。デフォルトは論理プロセッサの数です。

-host: サーバーのホスト名 (ホスト名または IP) とポート番号 (オプション) を明示的に指定します。このオプションが使用されない場合、クライアントは 同じサブネット の下でサーバーを自動的に検索します。

-p: サーバーの接続パスワードを明示的に指定します (サーバーにはデフォルトでパスワードがありません)。

--plaintext: 平文送信データを明示的に指定し、サーバーも平文送信を使用する必要があります。

コマンドの説明

通常の接続が完了したら、次のコマンドを入力します。

  1. ファイル(フォルダー)パスを入力すると、ファイル(フォルダー)が送信されます
  2. 「sysinfo」と入力すると、双方のシステム情報が表示されます。
  3. 「speedtest n」と入力すると、ネットワーク速度がテストされます。n はこのテストのデータ量 (MB 単位) です。 コンピュータ ネットワークでは、1 GB = 1000 MB = 1000000 KB であることに注意してください。
  4. 「compare local_dir dest_dir」と入力して、ローカル フォルダーとサーバー フォルダー内のファイルの違いを比較します。
  5. 「clip pull/push」または「clip get/send」と入力して、クライアントとサーバーのクリップボードの内容を同期します。
  6. 他のコンテンツを入力すると、それがサーバーへの実行命令として使用され、結果がリアルタイムで返されます。

スクリーンショットを実行

以下は、同じホスト上で実行されているスクリーンショットです。

プログラムの開始

スタートアップ

ファイルを転送する ファイル

実行コマンド:sysinfo

sysinfo

コマンドを実行します:speedtest

スピードテスト

コマンドを実行します: 比較

比較

コマンドを実行します: クリップ

クリップ

コマンドラインコマンドを実行する

コマンド

FTS

「FTS」はサーバー側であり、ファイルを受信して​​保存し、クライアントから送信された命令を実行するために使用されます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
usage: FTS.py [-h] [-d base_dir] [-p password] [--plaintext] [--avoid]

File Transfer Server, used to RECEIVE files and EXECUTE instructions.

optional arguments:
   -h, --help show this help message and exit
   -d base_dir, --dest base_dir
                         File storage location (default: C:\Users\admin/Desktop)
   -p password, --password password
                         Set a password for the host.
   --plaintext Use plaintext transfer (default: use ssl)
   --avoid Do not continue the transfer when the file name is repeated.

パラメータの説明

-d, --dest: ファイルの受信場所を明示的に指定します。デフォルトは構成項目「platform_default_path」の値です (Windows プラットフォームのデフォルトは デスクトップ)。

-p, --password: 悪意のある接続を防ぐためにサーバーのパスワードを設定します。

--plaintext: プレーンテキストでのデータ送信を明示的に指定し、デフォルトで ssl 暗号化送信を使用します。

--avoid: 有効にすると、ディレクトリに同じ名前のファイルがすでに存在する場合、受信側のファイルのサイズが送信側のファイルサイズ以上の場合、** の 2 つのケースが考えられます。ファイルの送信をブロックし、それ以外の場合は受信してこのファイルを上書きします*。この機能は主に、ブレークポイント再送信と同様に、多数のファイルが一度に中断された後の再送信に使用されます。**注意して使用してください。 **その他の場合。 有効にしない場合、既存のファイル名が「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 リスニング ポート

テーマ StackJimmy によって設計されています。 & Built with Hugo