การใช้ mscp สำหรับการถ่ายโอนไฟล์อย่างรวดเร็ว
เรียนรู้วิธีใช้ mscp (multi-threaded scp) สำหรับการถ่ายโอนไฟล์ความเร็วสูงไปยังเซิร์ฟเวอร์ Appbox ของคุณโดยใช้การเชื่อมต่อ SSH หลายรายการ
mscp เป็นรูปแบบ multi-threaded ของ 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 ของคุณให้ปลอดภัย คุณจะต้องใช้ hostname, username, password และ SFTP port สำหรับการเชื่อมต่อ mscp
การติดตั้ง 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 ไม่มี native Windows binaries แต่คุณสามารถใช้ผ่าน WSL (Windows Subsystem for Linux):
ขั้นตอน 1: ติดตั้ง WSL
เปิด PowerShell ในฐานะ Administrator แล้วรัน:
wsl --installรีสตาร์ทคอมพิวเตอร์เมื่อมีข้อความแจ้ง
ขั้นตอน 2: ติดตั้ง mscp ใน WSL
หลังจากตั้งค่า WSL แล้ว (Ubuntu เป็นค่าเริ่มต้น) ให้เปิด WSL terminal แล้วรัน:
sudo add-apt-repository ppa:upaa/mscp
sudo apt-get update
sudo apt-get install mscpWindows File Paths ใน WSL
ใน WSL ไดรฟ์ Windows ของคุณเข้าถึงได้ใต้ /mnt/ ตัวอย่างเช่น C:\Users\YourName\Downloads จะกลายเป็น /mnt/c/Users/YourName/Downloads
การ build จาก source
หากไม่มี packages สำหรับระบบของคุณ คุณสามารถ build mscp จาก source ได้:
# 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การใช้งานพื้นฐาน
syntax ของ 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 ไม่ต้องใช้ flag -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 Key
หากคุณตั้งค่าการยืนยันตัวตนด้วย SSH key กับ SFTPgo แล้ว:
mscp -P 25557 -i ~/.ssh/your_key localfile.zip username@sftpgo.yourserver.appboxes.co:/destination/จำกัด bandwidth
เพื่อจำกัด bandwidth การถ่ายโอน (มีประโยชน์บนการเชื่อมต่อที่ใช้ร่วมกัน):
mscp -P 25557 -l 10M localfile.zip username@sftpgo.yourserver.appboxes.co:/destination/ตัวอย่าง: Workflow แบบครบถ้วน
นี่คือตัวอย่างแบบครบถ้วนโดยใช้ข้อมูลรับรอง 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) - ใช้การเชื่อมต่อน้อยลงสำหรับไฟล์เล็กจำนวนมาก: สำหรับไดเรกทอรีที่มีไฟล์เล็กจำนวนมาก การเชื่อมต่อน้อยลงอาจมีประสิทธิภาพกว่า
- เปิดใช้ compression สำหรับไฟล์ข้อความ: mscp รับช่วง compression ของ SSH มา ใช้
-Cสำหรับการถ่ายโอนที่มีข้อความจำนวนมาก - ใช้ checkpointing สำหรับการถ่ายโอนขนาดใหญ่มาก: เปิดใช้ checkpointing เสมอสำหรับการถ่ายโอนหลายกิกะไบต์ เพื่อให้ดำเนินการต่อได้หากถูกขัดจังหวะ
การแก้ไขปัญหา
Connection Refused
ตรวจสอบให้แน่ใจว่าคุณใช้ SFTP port ที่ถูกต้องจากการตั้งค่า SFTPgo ของคุณ (ไม่ใช่ FTP port):
mscp -P 25557 ... # Use your actual SFTP portPermission Denied
ตรวจสอบว่า username และ password ของคุณถูกต้อง คุณสามารถทดสอบด้วย SFTP client มาตรฐานก่อนได้:
sftp -P 25557 username@sftpgo.yourserver.appboxes.coการถ่ายโอนช้า
ลองปรับจำนวนการเชื่อมต่อแบบขนาน:
mscp -P 25557 -n 16 ... # Increase connections