ДокументацияDocumentationTutorialsUsing mscp for Fast File Transfers

Использование mscp для быстрых передач файлов

Узнайте, как использовать mscp (многопоточный scp) для высокоскоростной передачи файлов на сервер Appbox через несколько SSH-подключений.

mscp — многопоточный вариант scp, который одновременно копирует файлы через несколько SSH (SFTP) подключений. Это заметно ускоряет передачу больших файлов и каталогов за счет параллельных подключений.

Требования

Перед использованием mscp нужно установить SFTPgo на сервер Appbox, чтобы получить SFTP-учетные данные.

Шаг 1: установите SFTPgo

  1. Откройте страницу приложения SFTPgo в Appbox App Store.
  2. Нажмите Install, чтобы добавить SFTPgo на сервер.
  3. После установки вы получите данные подключения:
    • Username: ваше имя пользователя SFTP
    • Password: ваш пароль SFTP
    • Hostname: например, sftpgo.yourserver.appboxes.co
    • SFTP Port: например, 25557
    • FTP/FTPS Port: например, 25555
    • WebDav URL: для доступа WebDAV

Установка mscp

Выберите способ установки для вашей операционной системы:

macOS

Через Homebrew (рекомендуется)

brew install upa/tap/mscp

Через MacPorts

sudo port install mscp

Ubuntu / Debian

sudo add-apt-repository ppa:upaa/mscp
sudo apt-get update
sudo apt-get install mscp

RHEL / Fedora / CentOS / Rocky Linux / AlmaLinux

sudo dnf copr enable upaaa/mscp
sudo dnf install mscp

Windows

У 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

Сборка из исходного кода

Если для вашей системы нет пакетов, можно собрать 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. Ниже приведены распространенные сценарии.

Загрузка файла на сервер

# -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/

Советы по производительности

  1. Используйте больше подключений для больших файлов: увеличьте значение -n для передачи больших файлов (например, -n 8 или -n 16)
  2. Используйте меньше подключений для множества маленьких файлов: для каталогов с большим числом маленьких файлов меньшее количество подключений может быть эффективнее
  3. Включайте сжатие для текстовых файлов: mscp наследует SSH-сжатие; используйте -C для передач с большим объемом текста
  4. Используйте 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

Дополнительные ресурсы