Achtung: Dieser Artikel wurde maschinell übersetzt, was zu schlechter Qualität oder falschen Informationen führen kann, bitte sorgfältig lesen!
Herkunft
Dieses Projekt wurde geschrieben und gespielt, nachdem ich letztes Semester mit dem Studium des Internets fertig war. Zuerst wollte ich Python nur verwenden, um gleichzeitig einen TCP-Verbindungs- und Paketerfassungstest durchzuführen; da ich zwei PCs habe, leide ich unter Dateiübertragung und Synchronisierung Probleme zwischen den beiden Computern. ;Ich habe selbst einen SFTP-Server eingerichtet und Resilio Sync
, Syncthing
und andere Dateiübertragungs- und Synchronisierungstools verwendet; weil ich „kleine und schöne“ Software mag, habe ich extrem hohe Anforderungen an Softwareleistung, Effizienz und Ressourcenverbrauch. Das verwendete Notebook hat eine begrenzte Akkulaufzeit und lässt nicht zu viele Hintergrundprozesse zu, daher habe ich nebenbei die Idee, ein Dateiübertragungsskript zu entwickeln.
Am Anfang war die Funktion sehr einfach, es kann jeweils nur eine Datei übertragen werden. Später wurde der Übertragungsordner hinzugefügt und einige Programmcode-Optimierungen vorgenommen. Nach meiner Rückkehr in die Schule habe ich es auf zwei Computern getestet und festgestellt und habe es gelöst Das Problem des Daten-Sticky-Pakets (unter Verwendung einer While-Schleife); Ich war besorgt darüber, ob die Datei während des Übertragungsprozesses beschädigt wurde, also habe ich MD5 zur Echtzeitberechnung und -überprüfung hinzugefügt (obwohl MD5 dies nicht ist). sicher, es wird für eine einzelne Datei verwendet. Die Dateiübertragung ist ausgezeichnet, nicht nur die Berechnung ist schnell, sondern auch die Hash-Verteilung ist sehr gut. Wenn ich meinen PC mit dem Campus-Netzwerk verbinde, mache ich mir Sorgen, dass das Campus-Netzwerk nicht sicher ist und möglicherweise von Daten erfasst werden, daher habe ich Secure Sockets Layer (SSL) hinzugefügt.
Beim Übertragen einer großen Anzahl von Dateien ging der Computer einmal in den Ruhezustand, was dazu führte, dass die Dateien erneut übertragen werden mussten, was nicht nur Bandbreite verschwendet (obwohl es im LAN nichts gibt), sondern auch Zeit verschwendet, also gibt es eine Funktion ähnlich der Breakpoint-Neuübertragung. Später habe ich den Code übrigens umgestaltet und Systeminformationen vergleichen, Netzwerkgeschwindigkeitstest, Ordnervergleich hinzugefügt (nach Abschluss der Übertragung ist der Vergleich sicherer). Inhalt der beiden Ordner. ), Befehlsfernausführung und andere Funktionen. In den letzten zwei Tagen habe ich plötzlich entdeckt, dass dieses kleine Programm so viele Funktionen hat, ohne es zu wissen, also habe ich es als Open Source geteilt. Das Folgende ist die Readme-Datei des Programms. Am Ende des Artikels befindet sich eine Lageradresse.
Einführung
File Transfer Tools
enthält FTS (File Transfer Server)
und FTC (File Transfer Client)
zwei Komponenten, die leicht, schnell, sicher und mehr sind Leistungsstarkes geräteübergreifendes Dateiübertragungsskript.
Funktion
- Dateiübertragung
- Übertragen Sie einzelne Dateien oder ganze Ordner
- Sicherheitsgarantie: Verschlüsselte Übertragung (mittels Secure Sockets Layer Protocol) und Klartextübertragung können verwendet werden
- Korrektheitsgarantie: Überprüfen Sie die Konsistenz der Dateien anhand des Hash-Werts und beurteilen Sie, ob alle Dateien im Ordner korrekt übertragen werden
- Fortschrittsbalkenanzeige: Echtzeitanzeige des Dateiübertragungsfortschritts, der aktuellen Netzwerkgeschwindigkeit und der verbleibenden Übertragungszeit
- Drei Methoden zum Umbenennen der Datei mit demselben Namen, um doppelte Übertragungen zu vermeiden und um Übertragungen zu überschreiben
- Befehlszeile, mit der Befehle problemlos aus der Ferne ausgeführt und Ergebnisse in Echtzeit zurückgegeben werden können, ähnlich wie bei ssh
- Suchen Sie automatisch nach dem Diensthost oder geben Sie den Verbindungshost manuell an
- Ordnervergleich, der Informationen wie Gleichheit und Unterschiede von Dateien in zwei Ordnern anzeigen kann
- Zeigen Sie den Status und die Informationen des Client- und Serversystems an
- Geben Sie Protokolle in Echtzeit an die Konsole und Dateien aus und können Sie komprimierte Protokolldateien automatisch organisieren
- Testen Sie bequem die Netzwerkbandbreite zwischen Client und Server
- Sie können ein Verbindungskennwort für den Server festlegen, um die Sicherheit zu erhöhen
- Synchronisieren Sie bequem den Inhalt der Zwischenablage von Client und Server
Merkmale
- Starten, ausführen und schnell reagieren
- Übernehmen Sie das Prinzip der minimalen Standardkonfiguration, das sofort verwendet werden kann, und Sie können die Konfiguration problemlos selbst ändern
- Es kann in jeder Netzwerkumgebung wie LAN und öffentlichen Netzwerken verwendet werden, solange die beiden Hosts eine Verbindung zum Netzwerk herstellen können
- Multithread-Übertragung, schnelle Übertragungsgeschwindigkeit, der eigentliche Test kann bis zu einer Bandbreite von 1000 Mbit/s laufen, aufgrund von Gerätebeschränkungen kein Test für höhere Bandbreite
- Zur Laufzeit ist die Speichernutzung gering und der Lazy-Loading-Modus wird verwendet, um eine minimale Ressourcenbelegung sicherzustellen
- Sofort öffnen, schließen und loslegen, nach dem Schließen des Programms bleibt kein Prozess mehr übrig
- Derzeit kompatibel mit Windows- und Linux-Plattformen
wie man wählt
- Wenn Sie einen leistungsfähigeren Dateiübertragungsdienst wünschen, wählen Sie bitte einen FTP-Server oder -Client (z. B.
FileZilla
,WinSCP
usw.) - Wenn Sie eine stabile Dateisynchronisierung und -freigabe wünschen, wird empfohlen,
Resilio Sync
,Syncthing
usw. zu verwenden. - Wenn Sie Dateien nur gelegentlich übertragen/der Hintergrundspeicher und die Ressourcenbelegung der oben genannten Dienste nicht gefallen/Sie keinen so leistungsstarken Dienst benötigen/Funktionen anpassen möchten, wählen Sie bitte
Dateiübertragungstools
.
Installieren und ausführen
FTS
belegt standardmäßig die Ports 2023 und 2021 und FTC belegt standardmäßig Port 2022. Darunter wird Port 2023 als TCP-Abhörport von FTS
verwendet, und 2021 und 2022 werden als UDP-Übertragungsschnittstellen zwischen dem Server und dem Client verwendet.
Sie können die detaillierten Konfigurationsinformationen überprüfen und die obige Konfiguration am Ende dieses Artikels ändern.
Ausführbares Programm herunterladen
- Klicken Sie rechts auf
Freigeben
. - Laden Sie
File Transfer Tools.zip
herunter - Entpacken Sie den Ordner und doppelklicken Sie zum Ausführen auf
FTC.exe
oderFTS.exe
. - Oder führen Sie das Programm in einem Terminal aus, um Programmparameter wie
.\FTC.exe [-h] [-t thread] [-host host] [-p]
zu verwenden
Mit dem Python-Interpreter ausführen
- Klonen Sie den Quellcode in Ihren Projektspeicherort
- Installieren Sie alle Abhängigkeiten mit
pip install -r require.txt
. - Führen Sie das Skript mit Ihrem Python-Interpreter aus
Verknüpfungsausführungsmethode
Am Beispiel von Windows können Sie die laufenden Befehle von FTS und FTC als Batchdateien schreiben und dann das Verzeichnis der Batchdatei zu Ihrer Umgebungsvariablen hinzufügen, sodass Sie einfach FTS
, FTC
eingeben können
Lassen Sie uns den standardmäßigen und einfachsten Befehl verwenden, um das Programm auszuführen.
Sie können beispielsweise den folgenden Befehl in die Datei FTS.bat
schreiben
|
|
Schreiben Sie den folgenden Befehl in die Datei FTC.bat
.
|
|
Fügen Sie dann den Batch-Ordner zu Ihren Umgebungsvariablen hinzu und geben Sie schließlich den folgenden Befehl in Ihr Terminal ein, um den Code schnell auszuführen
|
|
In der obigen Batchdatei stellt %1~%9
die vom Programm übergebenen Parameter dar (%0
stellt den aktuellen Pfad dar)
Beachten Sie, dass der Standardarbeitspfad des Terminals das Benutzerverzeichnis (~) ist. Wenn Sie die Konfigurationsdatei ändern müssen, ändern Sie sie bitte in diesem Verzeichnis.
Verwendung
FTC
FTC ist Auftraggeber für die Übermittlung von Dateien und Weisungen.
|
|
Parameterbeschreibung
-t
: Gibt die Anzahl der Threads an, der Standardwert ist die Anzahl der logischen Prozessoren.
-host
: Geben Sie explizit den Server-Hostnamen (Hostname oder IP) und die Portnummer (optional) an. Wenn diese Option nicht verwendet wird, sucht der Client automatisch nach einem Server unter dem gleichen Subnetz
-p
: Geben Sie explizit das Verbindungspasswort für den Server an (der Server hat standardmäßig kein Passwort).
--plaintext
: Geben Sie explizit Klartextübertragungsdaten an, sodass der Server auch die Klartextübertragung verwenden muss.
Befehlsbeschreibung
Geben Sie nach einer normalen Verbindung den Befehl ein
- Geben Sie den Pfad der Datei (des Ordners) ein und die Datei (der Ordner) wird gesendet
- Geben Sie
sysinfo
ein, die Systeminformationen beider Parteien werden angezeigt - Geben Sie
speedtest n
ein und die Netzwerkgeschwindigkeit wird getestet, wobei n die Datenmenge in diesem Test in MB ist. Beachten Sie, dass in Computernetzwerken 1 GB = 1000 MB = 1000000 KB ist. - Geben Sie
compare local_dir dest_dir
ein, um den Unterschied zwischen den Dateien im lokalen Ordner und im Serverordner zu vergleichen. - Geben Sie
Clip Pull/Push
oderClip Get/Send
ein, um den Inhalt der Client- und Server-Zwischenablage zu synchronisieren - Wenn andere Inhalte eingegeben werden, werden diese als Anweisungen für die Ausführung durch den Server verwendet und das Ergebnis wird in Echtzeit zurückgegeben.
Screenshot ausführen
Im Folgenden finden Sie Screenshots, die auf demselben Host ausgeführt werden.
Programmstart
Dateien übertragen
Ausführungsbefehl: sysinfo
Führen Sie den Befehl aus: speedtest
Führen Sie den Befehl aus: vergleichen
Führen Sie den Befehl aus: Clip
Führen Sie Befehlszeilenbefehle aus
FTS
FTS
ist die Serverseite, die zum Empfangen und Speichern von Dateien sowie zum Ausführen der vom Client gesendeten Anweisungen verwendet wird.
|
|
Parameterbeschreibung
-d, --dest
: Geben Sie explizit den Dateiempfangsort an. Der Standardwert ist der Wert des Konfigurationselements platform_default_path
(Windows-Plattform ist standardmäßig Desktop).
-p, --password
: Legen Sie ein Passwort für den Server fest, um böswillige Verbindungen zu verhindern.
--plaintext
: Geben Sie die Datenübertragung explizit im Klartext an und verwenden Sie standardmäßig die SSL-verschlüsselte Übertragung.
--avoid
: Wenn diese Option aktiviert ist und bereits eine Datei mit demselben Namen im Verzeichnis vorhanden ist, gibt es zwei Fälle: Wenn die Größe der Datei auf der empfangenden Seite größer oder gleich der Größe der sendenden Seite ist, ** Blockieren** Sie die Übertragung der Datei, andernfalls empfangen und *überschreiben *Diese Datei; diese Funktion wird hauptsächlich für die Neuübertragung verwendet, nachdem eine große Anzahl von Dateien gleichzeitig unterbrochen wurde, ähnlich der Neuübertragung an Haltepunkten, bitte **mit Vorsicht verwenden ** in anderen Fällen. Wenn die Option nicht aktiviert ist und der vorhandene Dateiname a.txt
lautet, werden die übertragenen Dateien nacheinander nach a (1).txt
und a (2).txt
benannt.
Screenshot ausführen
Aufbau
Die Konfigurationselemente befinden sich in der Konfigurationsdatei config.txt
. Wenn die Konfigurationsdatei nicht vorhanden ist, erstellt das Programm automatisch die Standardkonfigurationsdatei
Die Hauptkonfiguration des Hauptprogramms
windows_default_path
: Der Standardspeicherort für den Dateiempfang auf der Windows-Plattform
linux_default_path
: Der Standardspeicherort für den Dateiempfang unter der Linux-Plattform
cert_dir
: Der Speicherort der Zertifikatsdatei
Protokollbezogene Konfiguration
windows_log_dir
: Der Standardspeicherort für Protokolldateien unter der Windows-Plattform
linux_log_dir
: Der Standardspeicherort für Protokolldateien unter der Linux-Plattform
log_file_archive_count
: Archivieren, wenn die Anzahl der Protokolldateien diese Größe überschreitet
log_file_archive_size
: Archivieren, wenn die Gesamtgröße (Bytes) der Protokolldatei diese Größe überschreitet
Portbezogener Inhalt zur Portkonfiguration
server_port
: TCP-Abhörport des Servers
server_signal_port
: UDP-Abhörport des Servers
client_signal_port
: Client-UDP-Abhörport