DocsDocumentationTutorialsUsing mscp for Fast File Transfers

Usar mscp para transferencias rápidas de archivos

Aprende a usar mscp (scp multihilo) para transferencias de archivos de alta velocidad a tu servidor Appbox usando varias conexiones SSH.

mscp es una variante multihilo de scp que copia archivos mediante varias conexiones SSH (SFTP) simultáneas. Esto permite transferencias mucho más rápidas para archivos y directorios grandes al utilizar conexiones paralelas.

Requisitos previos

Antes de usar mscp, debes instalar SFTPgo en tu servidor Appbox para obtener tus credenciales SFTP.

Paso 1: Instalar SFTPgo

  1. Visita la página de la app SFTPgo en Appbox App Store
  2. Haz clic en Install para añadir SFTPgo a tu servidor
  3. Una vez instalado, recibirás tus datos de conexión:
    • Username: tu usuario SFTP
    • Password: tu contraseña SFTP
    • Hostname: por ejemplo, sftpgo.yourserver.appboxes.co
    • SFTP Port: por ejemplo, 25557
    • FTP/FTPS Port: por ejemplo, 25555
    • WebDav URL: para acceso WebDAV

Instalar mscp

Elige el método de instalación para tu sistema operativo:

macOS

Usando Homebrew (recomendado)

brew install upa/tap/mscp

Usando 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 no tiene binarios nativos para Windows, pero puedes usarlo mediante WSL (Windows Subsystem for Linux):

Paso 1: Instalar WSL

Abre PowerShell como administrador y ejecuta:

wsl --install

Reinicia el equipo cuando se te indique.

Paso 2: Instalar mscp en WSL

Cuando WSL esté configurado (Ubuntu es la opción predeterminada), abre la terminal de WSL y ejecuta:

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

Compilar desde el código fuente

Si no hay paquetes disponibles para tu sistema, puedes compilar mscp desde el código fuente:

# 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

Uso básico

La sintaxis de mscp es similar a la de scp. Estos son patrones de uso comunes.

Subir un archivo a tu servidor

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

Subir un directorio

A diferencia de scp, mscp no requiere el flag -r para directorios:

# -P 25557 is the SFTP port from your SFTPgo Options
mscp -P 25557 /local/directory username@sftpgo.yourserver.appboxes.co:/remote/path/

Descargar un archivo desde tu servidor

# Replace 25557 with your actual SFTP port
mscp -P 25557 username@sftpgo.yourserver.appboxes.co:/remote/file.zip /local/destination/

Descargar un directorio

mscp -P 25557 username@sftpgo.yourserver.appboxes.co:/remote/directory/ /local/path/

Opciones avanzadas

Usar varias conexiones

De forma predeterminada, mscp usa varias conexiones. Puedes especificar el número de conexiones con -n:

mscp -P 25557 -n 8 largefile.zip username@sftpgo.yourserver.appboxes.co:/destination/

Reanudar transferencias fallidas (checkpointing)

mscp admite checkpointing para reanudar transferencias interrumpidas:

# 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

Especificar autenticación con clave SSH

Si has configurado autenticación con clave SSH en SFTPgo:

mscp -P 25557 -i ~/.ssh/your_key localfile.zip username@sftpgo.yourserver.appboxes.co:/destination/

Limitar el ancho de banda

Para limitar el ancho de banda de transferencia (útil en conexiones compartidas):

mscp -P 25557 -l 10M localfile.zip username@sftpgo.yourserver.appboxes.co:/destination/

Ejemplo: flujo completo

Este es un ejemplo completo usando las credenciales de SFTPgo de 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/

Consejos de rendimiento

  1. Usa más conexiones para archivos grandes: aumenta el valor de -n para transferencias de archivos grandes (por ejemplo, -n 8 o -n 16)
  2. Usa menos conexiones para muchos archivos pequeños: en directorios con muchos archivos pequeños, menos conexiones puede ser más eficiente
  3. Activa la compresión para archivos de texto: mscp hereda la compresión de SSH; usa -C para transferencias con mucho texto
  4. Usa checkpointing para transferencias muy grandes: activa siempre checkpointing para transferencias de varios gigabytes y poder reanudarlas si se interrumpen

Solución de problemas

Conexión rechazada

Asegúrate de usar el puerto SFTP correcto de tus ajustes de SFTPgo (no el puerto FTP):

mscp -P 25557 ...  # Use your actual SFTP port

Permiso denegado

Verifica que tu usuario y contraseña sean correctos. Puedes probar primero con un cliente SFTP estándar:

sftp -P 25557 username@sftpgo.yourserver.appboxes.co

Transferencias lentas

Prueba a ajustar el número de conexiones paralelas:

mscp -P 25557 -n 16 ...  # Increase connections

Recursos adicionales