Attention : cet article est traduit par machine, ce qui peut entraîner une mauvaise qualité ou des informations incorrectes, veuillez lire attentivement !
origine
Ce projet a été écrit et joué après avoir fini d’étudier Internet le semestre dernier. Au début, je voulais juste utiliser python pour effectuer un test de connexion TCP et de capture de paquets en même temps ; depuis que j’ai deux PC, je souffre de transfert et de synchronisation de fichiers problèmes entre les deux ordinateurs. ;J’ai configuré moi-même un serveur SFTP et utilisé Resilio Sync
, Syncthing
et d’autres outils de transfert et de synchronisation de fichiers; parce que j’aime les logiciels “petits et beaux”, j’ai des exigences extrêmement élevées pour performances logicielles, efficacité et utilisation des ressources.Le portable utilisé a une autonomie limitée et ne permet pas trop de processus en arrière-plan, j’ai donc l’idée de développer un script de transfert de fichiers en passant.
Au début, la fonction était très simple, un seul fichier peut être transféré à la fois. Plus tard, le dossier de transfert a été ajouté et une optimisation du code du programme a été effectuée ; après mon retour à l’école, je l’ai testé sur deux ordinateurs et j’ai trouvé et l’a résolu Le problème du paquet collant de données (utilisant une boucle while); Je m’inquiétais de savoir si le fichier était endommagé pendant le processus de transmission, j’ai donc ajouté le calcul et la vérification en temps réel MD5 (bien que MD5 ne soit pas aussi sûr, il est utilisé pour un seul Le transfert de fichiers est excellent, non seulement le calcul est rapide, mais aussi la distribution du hachage est très bonne); lorsque je connecte mon PC au réseau du campus, je crains que le réseau du campus ne soit pas sûr et peuvent être capturés par des données, j’ai donc ajouté Secure Sockets Layer (SSL).
Une fois lors du transfert d’un grand nombre de fichiers, l’ordinateur s’est mis en veille, ce qui a entraîné la nécessité de retransmettre à nouveau les fichiers, ce qui non seulement gaspille de la bande passante (bien qu’il n’y ait rien dans le LAN), mais aussi une perte de temps, il y a donc un fonction similaire à la retransmission de point d’arrêt. Plus tard, j’ai refactorisé le code au passage, et ajouté Comparer les informations système, Test de vitesse réseau, Comparaison des dossiers (une fois le transfert terminé, il est plus rassurant de comparer les contenu des deux dossiers. ), commande d’exécution à distance et d’autres fonctions. Au cours des deux derniers jours, j’ai soudainement découvert que ce petit programme avait tellement de fonctions sans le savoir, alors je l’ai partagé en open source. Ce qui suit est le fichier Lisez-moi du programme, et il y a une adresse d’entrepôt à la fin de l’article.
Introduction
File Transfer Tools
contient FTS (File Transfer Server)
et FTC (File Transfer Client)
deux composants, qui sont légers, rapides, sûrs, et plus puissant script de transfert de fichiers multi-appareils.
Fonction
- Transfert de fichiers
- Transférer des fichiers individuels ou des dossiers entiers
- Garantie de sécurité : la transmission cryptée (à l’aide du protocole Secure Sockets Layer) et la transmission en texte clair peuvent être utilisées
- Garantie d’exactitude : vérifiez la cohérence des fichiers via la valeur de hachage et jugez si tous les fichiers du dossier sont correctement transmis.
- Affichage de la barre de progression : affichage en temps réel de la progression du transfert de fichiers, de la vitesse actuelle du réseau et du temps de transfert restant
- Trois méthodes pour renommer le fichier avec le même nom, éviter le transfert en double et écraser le transfert
- Ligne de commande, qui peut facilement exécuter des commandes à distance et renvoyer des résultats en temps réel, similaire à ssh
- Trouver automatiquement l’hôte de service ou spécifier manuellement l’hôte de connexion
- Comparaison de dossiers, qui peut afficher des informations telles que les mêmes et les différences de fichiers dans deux dossiers
- Afficher l’état et les informations du système client et serveur
- Exportez les journaux vers la console et les fichiers en temps réel, et pouvez organiser automatiquement les fichiers journaux compressés
- Testez facilement la bande passante du réseau entre le client et le serveur
- Vous pouvez définir un mot de passe de connexion pour le serveur afin d’améliorer la sécurité
- Synchronisez facilement le contenu du presse-papiers du client et du serveur
Caractéristiques
- Commencez, courez et répondez rapidement
- Adoptez le principe de configuration par défaut minimum, qui peut être utilisé hors de la boîte, et vous pouvez facilement modifier la configuration par vous-même
- Il peut être utilisé dans n’importe quel environnement réseau tel que LAN et réseau public, tant que les deux hôtes peuvent se connecter au réseau
- Transmission multithread, vitesse de transmission rapide, le test réel peut fonctionner jusqu’à 1000 Mbps de bande passante, en raison des limitations de l’équipement, pas de test pour une bande passante plus élevée
- L’utilisation de la mémoire est faible lors de l’exécution et le mode de chargement paresseux est adopté pour garantir une occupation minimale des ressources
- Ouvrir, fermer et partir instantanément, aucun processus ne restera après la fermeture du programme
- Actuellement compatible avec les plates-formes Windows et Linux
comment choisir
- Si vous souhaitez un service de transfert de fichiers plus puissant, veuillez choisir un serveur FTP, un client (tel que
FileZilla
,WinSCP
, etc.) - Si vous souhaitez une synchronisation et un partage de fichiers stables, il est recommandé d’utiliser
Resilio Sync
,Syncthing
, etc. - Si vous ne transférez des fichiers qu’occasionnellement/n’aimez pas le stockage en arrière-plan et l’occupation des ressources des services ci-dessus/n’avez pas besoin d’un service aussi puissant/souhaitez personnaliser les fonctions, veuillez choisir “Outils de transfert de fichiers”
Installer et exécuter
FTS
occupe les ports 2023 et 2021 par défaut, et FTC occupe le port 2022 par défaut. Parmi eux, le port 2023 est utilisé comme port d’écoute TCP de “FTS”, et 2021 et 2022 sont utilisés comme interfaces de transmission UDP entre le serveur et le client.
Vous pouvez vérifier les informations de configuration détaillées et modifier la configuration ci-dessus à la fin de cet article.
Télécharger le programme exécutable
- Cliquez sur “Libérer” à droite
- Téléchargez
Outils de transfert de fichiers.zip
- Décompressez le dossier, double-cliquez sur
FTC.exe
ouFTS.exe
pour exécuter - Ou exécutez le programme dans un terminal pour utiliser les paramètres du programme, tels que
.\FTC.exe [-h] [-t thread] [-host host] [-p]
Exécuter avec l’interpréteur Python
- Clonez le code source dans l’emplacement de votre projet
- Installez toutes les dépendances en utilisant
pip install -r requirements.txt
- Exécutez le script à l’aide de votre interpréteur Python
méthode d’exécution du raccourci
En prenant Windows comme exemple, vous pouvez écrire les commandes en cours d’exécution de FTS et FTC sous forme de fichiers batch, puis ajouter le répertoire du fichier batch à votre variable d’environnement, de sorte que vous puissiez simplement taper FTS
, FTC
Utilisons la commande par défaut et la plus simple pour exécuter le programme.
Par exemple, vous pouvez écrire la commande suivante dans le fichier FTS.bat
|
|
Écrivez la commande suivante dans le fichier FTC.bat
|
|
Ensuite, ajoutez le dossier batch à vos variables d’environnement, et enfin tapez la commande suivante dans votre terminal pour exécuter rapidement le code
|
|
Dans le fichier batch ci-dessus, %1~%9
représente les paramètres transmis par le programme (%0
représente le chemin actuel)
Notez que le chemin de travail par défaut du terminal est le répertoire utilisateur (~), si vous avez besoin de modifier le fichier de configuration, veuillez le modifier dans ce répertoire.
Utilisation
FTC
FTC est le client pour l’envoi de fichiers et d’instructions.
|
|
Paramètre Description
-t
: Spécifie le nombre de threads, la valeur par défaut est le nombre de processeurs logiques.
-host
: spécifiez explicitement le nom d’hôte du serveur (nom d’hôte ou adresse IP) et le numéro de port (facultatif). Lorsque cette option n’est pas utilisée, le client recherchera automatiquement un serveur sous même sous-réseau
-p
: Spécifiez explicitement le mot de passe de connexion pour le serveur (le serveur n’a pas de mot de passe par défaut).
--plaintext
: spécifiez explicitement les données de transmission en clair, ce qui oblige le serveur à utiliser également la transmission en clair.
Description de la commande
Après une connexion normale, entrez la commande
- Entrez le chemin du fichier (dossier) et le fichier (dossier) sera envoyé
- Entrez
sysinfo
, les informations système des deux parties seront affichées - Entrez
speedtest n
, et la vitesse du réseau sera testée, où n est la quantité de données dans ce test, en Mo. Notez que dans Réseau informatique, 1 Go = 1 000 Mo = 1 000 000 Ko. - Entrez
compare local_dir dest_dir
pour comparer la différence entre les fichiers du dossier local et le dossier du serveur. - Entrez
clip pull/push
ouclip get/send
pour synchroniser le contenu du presse-papiers client et serveur - Lorsqu’un autre contenu est saisi, il est utilisé comme une instruction à exécuter par le serveur et le résultat est renvoyé en temps réel.
Exécuter la capture d’écran
Voici des captures d’écran exécutées sur le même hôte.
démarrage du programme
transférer des fichiers
Commande d’exécution : sysinfo
Exécutez la commande : speedtest
Exécutez la commande : comparer
Exécutez la commande : clip
Exécuter des commandes de ligne de commande
FTS
FTS
est le côté serveur, utilisé pour recevoir et stocker des fichiers et exécuter les instructions envoyées par le client.
|
|
Paramètre Description
-d, --dest
: spécifiez explicitement l’emplacement de réception du fichier, la valeur par défaut est la valeur de l’élément de configuration “platform_default_path” (la plate-forme Windows par défaut est desktop).
-p, --password
: définissez un mot de passe pour le serveur afin d’empêcher les connexions malveillantes.
--plaintext
: spécifiez explicitement la transmission de données en texte brut et utilisez la transmission chiffrée ssl par défaut.
--avoid
: lorsqu’il est activé, s’il existe déjà un fichier portant le même nom dans le répertoire, il y a deux cas. Si la taille du fichier à l’extrémité de réception est supérieure ou égale à l’extrémité d’envoi, ** bloquer** la transmission du fichier, sinon recevoir et *écraser *Ce fichier ; cette fonction est principalement utilisée pour la retransmission après qu’un grand nombre de fichiers sont interrompus en même temps, similaire à la retransmission de point d’arrêt, veuillez **utiliser avec prudence ** dans d’autres cas. Lorsqu’il n’est pas activé, si le nom de fichier existant est a.txt
, les fichiers transférés seront nommés selon a (1).txt
, a (2).txt
dans l’ordre.
Exécutez la capture d’écran
configuration
Les éléments de configuration sont dans le fichier de configuration config.txt
, lorsque le fichier de configuration n’existe pas, le programme créera automatiquement le fichier de configuration par défaut
La configuration principale du programme principal
windows_default_path
: L’emplacement de réception du fichier par défaut sous la plate-forme Windows
linux_default_path
: l’emplacement de réception du fichier par défaut sous la plate-forme Linux
cert_dir
: l’emplacement de stockage du fichier de certificat
### Configuration liée au journal
windows_log_dir
: L’emplacement de stockage du fichier journal par défaut sous la plate-forme Windows
linux_log_dir
: L’emplacement de stockage du fichier journal par défaut sous la plate-forme Linux
log_file_archive_count
: archive lorsque le nombre de fichiers journaux dépasse cette taille
log_file_archive_size
: archive lorsque la taille totale (octets) du fichier journal dépasse cette taille
Contenu relatif au port de configuration de port
server_port
: port d’écoute TCP du serveur
server_signal_port
: port d’écoute UDP du serveur
client_signal_port
: port d’écoute UDP du client