Предупреждение: Эта статья переведена автоматически, что может привести к некачественной или неверной информации, пожалуйста, внимательно прочитайте!
источник
Этот проект был написан и сыгран после того, как я закончил изучение интернета в прошлом семестре.Сначала я просто хотел использовать python для выполнения теста TCP соединения и захвата пакетов одновременно, так как у меня два ПК, я мучаюсь с передачей файлов и синхронизацией проблемы между двумя компьютерами. ;Я сам установил SFTP-сервер и использовал Resilio Sync
, Syncthing
и другие инструменты для передачи и синхронизации файлов; поскольку мне нравится «маленькое и красивое» программное обеспечение, у меня очень высокие требования к производительность программного обеспечения, эффективность и использование ресурсов Используемый ноутбук имеет ограниченное время автономной работы и не допускает слишком много фоновых процессов, поэтому, кстати, у меня есть идея разработать сценарий передачи файлов.
В начале функция была очень простой, за один раз можно передать только один файл, позже была добавлена папка для передачи и произведена некоторая оптимизация программного кода, после возвращения в школу я протестировал ее на двух компьютерах и нашел и решил ее* Проблема залипания пакета данных (используя цикл while); меня беспокоило, не повредится ли файл в процессе передачи, поэтому я добавил вычисление и проверку в реальном времени MD5 (хотя MD5 не так безопасен, используется для одиночного Передача файлов отличная, не только вычисление быстрое, но и распределение хэша очень хорошее); когда я подключаю свой компьютер к сети кампуса, я беспокоюсь, что сеть кампуса небезопасна и могут быть захвачены данными, поэтому я добавил Secure Sockets Layer (SSL).
Однажды при передаче большого количества файлов компьютер ушел в сон, что привело к необходимости повторной передачи файлов, что не только тратит впустую полосу пропускания (хотя в локалке ничего нет), но и тратит время, так что есть функция аналогична повторной передаче точки останова. Позже, кстати, я провел рефакторинг кода и добавил Сравнить информацию о системе, Тест скорости сети, Сравнение папок (после завершения переноса удобнее сравнить содержимое двух папок. ), удаленное выполнение команд и другие функции. За последние два дня я неожиданно обнаружил, что эта маленькая программа имеет так много функций, не зная об этом, поэтому я поделился ею как с открытым исходным кодом. Далее идет Readme программы, а в конце статьи адрес склада.
Введение
File Transfer Tools содержит два компонента FTS (File Transfer Server) и FTC (File Transfer Client), которые являются легкими, быстрыми, безопасными и т.д. мощный скрипт передачи файлов между устройствами.
Функция
- Передача файлов
- Перенос отдельных файлов или целых папок
- Гарантия безопасности: можно использовать зашифрованную передачу (с использованием протокола Secure Sockets Layer) и передачу в открытом виде.
- Гарантия правильности: проверьте согласованность файлов с помощью значения хэша и оцените, все ли файлы в папке передаются правильно.
- Отображение индикатора выполнения: отображение в реальном времени хода передачи файлов, текущей скорости сети и оставшегося времени передачи.
- Три метода переименования файла с тем же именем, избегая дублирования передачи и перезаписывая передачу
- Командная строка, которая может легко выполнять команды удаленно и возвращать результаты в режиме реального времени, аналогично ssh
- Автоматически найти хост службы или вручную указать хост подключения
- Сравнение папок, которое может отображать такую информацию, как одинаковые и различия файлов в двух папках.
- Просмотр состояния и информации системы клиента и сервера.
- Вывод журналов на консоль и в файлы в режиме реального времени, а также возможность автоматической организации сжатых файлов журналов.
- Удобно тестировать пропускную способность сети между клиентом и сервером
- Вы можете установить пароль для подключения к серверу для повышения безопасности
- Удобно синхронизировать содержимое буфера обмена клиента и сервера
Функции
- Запускайте, работайте и быстро реагируйте
- Примите принцип минимальной конфигурации по умолчанию, который можно использовать «из коробки», и вы можете легко изменить конфигурацию самостоятельно.
- Его можно использовать в любой сетевой среде, такой как локальная сеть и общедоступная сеть, если два хоста могут подключаться к сети.
- Многопоточная передача, высокая скорость передачи, фактический тест может работать с пропускной способностью до 1000 Мбит / с из-за ограничений оборудования, нет теста на более высокую пропускную способность.
- Использование памяти во время выполнения невелико, а режим ленивой загрузки используется для обеспечения минимального использования ресурсов.
- Мгновенно открыть, закрыть и уйти, после закрытия программы не останется никакого процесса
- В настоящее время совместим с платформами Windows и Linux.
как выбрать
- Если вам нужна более мощная служба передачи файлов, выберите FTP-сервер, клиент (например, «FileZilla», «WinSCP» и т. д.)
- Если вам нужна стабильная синхронизация файлов и обмен ими, рекомендуется использовать «Resilio Sync», «Syncthing» и т. д.
- Если вы только время от времени передаете файлы/не любите фоновое хранилище и использование ресурсов вышеуказанными сервисами/не нуждаетесь в таком мощном сервисе/хотите настроить функции, выберите «Инструменты для передачи файлов».
Установите и запустите
FTS
по умолчанию занимает порты 2023 и 2021, а FTC по умолчанию занимает порт 2022. Среди них порт 2023 используется в качестве TCP-порта прослушивания FTS, а 2021 и 2022 используются в качестве интерфейсов передачи UDP между сервером и клиентом.
Вы можете проверить подробную информацию о конфигурации и изменить вышеуказанную конфигурацию в конце этой статьи.
Скачать исполняемую программу
- Нажмите «Отпустить» справа.
- Загрузите
File Transfer Tools.zip
- Разархивируйте папку, дважды щелкните
FTC.exe
илиFTS.exe
, чтобы запустить - Или запустите программу в терминале, чтобы использовать параметры программы, такие как
.\FTC.exe [-h] [-t thread] [-host host] [-p]
Запуск с интерпретатором Python
- Клонируйте исходный код в папку вашего проекта.
- Установите все зависимости, используя
pip install -r requirements.txt
- Выполните скрипт с помощью интерпретатора Python.
метод быстрого выполнения
|
|
Запишите следующую команду в файл FTC.bat
``PowerShell @эхо выключено “Каталог вашего интерпретатора Python”\Scripts\python.exe “Каталог вашего проекта”\FTC.py %1 %2 %3 %4 %5 %6
|
|
В приведенном выше пакетном файле %1~%9
представляет параметры, переданные программой (%0
представляет текущий путь)
Обратите внимание, что рабочий путь терминала по умолчанию — это пользовательский каталог (~), если вам нужно изменить файл конфигурации, измените его в этом каталоге.
Использование
ФТК
FTC — это клиент для отправки файлов и инструкций.
|
|
Параметр Описание
-t
: указывает количество потоков, по умолчанию это количество логических процессоров.
-host
: явно укажите имя хоста сервера (имя хоста или IP-адрес) и номер порта (необязательно). Если этот параметр не используется, клиент будет автоматически искать сервер в той же подсети
-p
: Явно укажите пароль для подключения к серверу (по умолчанию у сервера нет пароля).
--plaintext
: Явно укажите данные для передачи в виде открытого текста, требуя, чтобы сервер также использовал передачу в виде открытого текста.
Описание команды
После обычного подключения введите команду
- Введите путь к файлу (папке), и файл (папка) будет отправлен
- Введите «sysinfo», отобразится системная информация обеих сторон.
- Введите
speedtest n
, и скорость сети будет протестирована, где n — это объем данных в этом тесте в МБ. Обратите внимание, что в Компьютерных сетях 1 ГБ = 1000 МБ = 1 000 000 КБ. - Введите
compare local_dir dest_dir
, чтобы сравнить разницу между файлами в локальной папке и папке сервера. - Введите «clip pull/push» или «clip get/send», чтобы синхронизировать содержимое буфера обмена клиента и сервера.
- Когда вводится другой контент, он используется как инструкция для выполнения сервером, и результат возвращается в режиме реального времени.
Выполнить Скриншот
Ниже приведены скриншоты, запущенные на том же хосте.
запуск программы
передавать файлы
Команда выполнения: sysinfo
Выполните команду: speedtest
Выполните команду: сравнить
Выполните команду: клип
Выполнять команды командной строки
ФНС
«FTS» — это серверная часть, используемая для приема и хранения файлов и выполнения инструкций, отправленных клиентом.
|
|
Параметр Описание
-d, --dest
: Явно укажите место получения файла, по умолчанию используется значение элемента конфигурации “platform_default_path” (платформа Windows по умолчанию рабочий стол).
-p, --password
: Установите пароль для сервера, чтобы предотвратить вредоносные подключения.
--plaintext
: Явно укажите передачу данных в виде обычного текста и используйте шифрованную передачу ssl по умолчанию.
--avoid
: если включено, если в каталоге уже есть файл с таким именем, возможны два случая. Если размер файла на принимающей стороне больше или равен размеру отправляющей стороны, ** заблокировать** передачу файла, в противном случае получить и *переписать *Этот файл; эта функция в основном используется для повторной передачи после того, как большое количество файлов было прервано одновременно, аналогично повторной передаче точки останова, **используйте с осторожностью ** в остальных случаях. Если этот параметр не включен, если существующее имя файла — «a.txt», передаваемые файлы будут называться в соответствии с последовательностью «a (1).txt», «a (2).txt».
Запустить скриншот
конфигурация
Элементы конфигурации находятся в файле конфигурации config.txt
, если файл конфигурации не существует, программа автоматически создаст файл конфигурации по умолчанию.
Основная конфигурация Главной программы
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 клиента