Использование mscp для быстрых передач файлов
Узнайте, как использовать mscp (многопоточный scp) для высокоскоростной передачи файлов на сервер Appbox через несколько SSH-подключений.
mscp — многопоточный вариант scp, который одновременно копирует файлы через несколько SSH (SFTP) подключений. Это заметно ускоряет передачу больших файлов и каталогов за счет параллельных подключений.
Требования
Перед использованием mscp нужно установить SFTPgo на сервер Appbox, чтобы получить SFTP-учетные данные.
Шаг 1: установите SFTPgo
- Откройте страницу приложения SFTPgo в Appbox App Store.
- Нажмите Install, чтобы добавить SFTPgo на сервер.
- После установки вы получите данные подключения:
- Username: ваше имя пользователя SFTP
- Password: ваш пароль SFTP
- Hostname: например,
sftpgo.yourserver.appboxes.co - SFTP Port: например,
25557 - FTP/FTPS Port: например,
25555 - WebDav URL: для доступа WebDAV
Примечание
Храните учетные данные SFTPgo в безопасности. Для подключений mscp понадобятся hostname, username, password и SFTP port.
Установка mscp
Выберите способ установки для вашей операционной системы:
macOS
Через Homebrew (рекомендуется)
brew install upa/tap/mscpЧерез MacPorts
sudo port install mscpUbuntu / Debian
sudo add-apt-repository ppa:upaa/mscp
sudo apt-get update
sudo apt-get install mscpRHEL / Fedora / CentOS / Rocky Linux / AlmaLinux
sudo dnf copr enable upaaa/mscp
sudo dnf install mscpWindows
У mscp нет нативных бинарных файлов для Windows, но его можно использовать через WSL (Windows Subsystem for Linux):
Шаг 1: установите WSL
Откройте PowerShell от имени администратора и выполните:
wsl --installПерезагрузите компьютер, когда появится запрос.
Шаг 2: установите mscp в WSL
После настройки WSL (по умолчанию используется Ubuntu) откройте терминал WSL и выполните:
sudo add-apt-repository ppa:upaa/mscp
sudo apt-get update
sudo apt-get install mscpПути файлов Windows в WSL
В WSL диски Windows доступны в /mnt/. Например, C:\Users\YourName\Downloads становится /mnt/c/Users/YourName/Downloads.
Сборка из исходного кода
Если для вашей системы нет пакетов, можно собрать mscp из исходного кода:
# Clone the repository
git clone https://github.com/upa/mscp.git
cd mscp
# Prepare patched libssh
git submodule update --init
patch -d libssh -p1 < patch/$(git -C libssh describe).patch
# Install build dependencies
bash ./scripts/install-build-deps.sh
# Build
mkdir build && cd build
cmake ..
make
# Install
sudo make installБазовое использование
Синтаксис mscp похож на scp. Ниже приведены распространенные сценарии.
Важно: используйте свой SFTP port
В примерах ниже 25557 означает SFTP Port из настроек SFTPgo. Замените его на фактический SFTP port, показанный в панели SFTPgo Options.
Загрузка файла на сервер
# -P specifies the SFTP port (use your SFTP port from SFTPgo settings)
mscp -P 25557 localfile.zip username@sftpgo.yourserver.appboxes.co:/path/to/destination/Загрузка каталога
В отличие от scp, mscp не требует флаг -r для каталогов:
# -P 25557 is the SFTP port from your SFTPgo Options
mscp -P 25557 /local/directory username@sftpgo.yourserver.appboxes.co:/remote/path/Скачивание файла с сервера
# Replace 25557 with your actual SFTP port
mscp -P 25557 username@sftpgo.yourserver.appboxes.co:/remote/file.zip /local/destination/Скачивание каталога
mscp -P 25557 username@sftpgo.yourserver.appboxes.co:/remote/directory/ /local/path/Расширенные параметры
Использование нескольких подключений
По умолчанию mscp использует несколько подключений. Количество подключений можно указать через -n:
mscp -P 25557 -n 8 largefile.zip username@sftpgo.yourserver.appboxes.co:/destination/Возобновление неудачных передач (checkpointing)
mscp поддерживает checkpointing для возобновления прерванных передач:
# Enable checkpointing
mscp -P 25557 -C /path/to/checkpoint.json largefile.zip username@server:/destination/
# Resume a failed transfer
mscp -P 25557 -C /path/to/checkpoint.json -rУказание аутентификации по SSH-ключу
Если вы настроили аутентификацию по SSH-ключу в SFTPgo:
mscp -P 25557 -i ~/.ssh/your_key localfile.zip username@sftpgo.yourserver.appboxes.co:/destination/Ограничение пропускной способности
Чтобы ограничить скорость передачи (полезно на общих соединениях):
mscp -P 25557 -l 10M localfile.zip username@sftpgo.yourserver.appboxes.co:/destination/Пример: полный рабочий процесс
Вот полный пример с учетными данными SFTPgo из Appbox:
# Set your credentials (replace with your actual values from SFTPgo Options)
HOST="sftpgo.yourserver.appboxes.co" # Your Hostname
PORT="25557" # Your SFTP Port (not FTP port!)
USER="your_username" # Your Username
# Upload a large file using 4 connections
mscp -P $PORT -n 4 ~/Downloads/large-backup.tar.gz $USER@$HOST:/backups/
# Upload an entire directory
mscp -P $PORT ~/Projects/my-website/ $USER@$HOST:/www/
# Download files from server
mscp -P $PORT $USER@$HOST:/media/movies/ ~/Downloads/movies/Советы по производительности
- Используйте больше подключений для больших файлов: увеличьте значение
-nдля передачи больших файлов (например,-n 8или-n 16) - Используйте меньше подключений для множества маленьких файлов: для каталогов с большим числом маленьких файлов меньшее количество подключений может быть эффективнее
- Включайте сжатие для текстовых файлов: mscp наследует SSH-сжатие; используйте
-Cдля передач с большим объемом текста - Используйте checkpointing для очень больших передач: всегда включайте checkpointing для многогигабайтных передач, чтобы можно было возобновить их при прерывании
Устранение неполадок
Отказ в подключении
Убедитесь, что используете правильный SFTP port из настроек SFTPgo (а не FTP port):
mscp -P 25557 ... # Use your actual SFTP portДоступ запрещен
Проверьте правильность username и password. Сначала можно протестировать подключение обычным SFTP-клиентом:
sftp -P 25557 username@sftpgo.yourserver.appboxes.coМедленная передача
Попробуйте изменить количество параллельных подключений:
mscp -P 25557 -n 16 ... # Increase connections