Hướng Dẫn Sử Dụng SCP Để Copy File Trên Linux

huong-dan-su-dung-scp-de-copy-file-tren-linux

SCP là gì?

 

Mô Hình Lab

lab-SCP

 

Trong bài viết này, Zhost sẽ sử dụng 02 Server chạy CentOS 7 để thực hiện trao đổi file qua SCP.

  • Linux Server 01: 10.10.10.11
  • Linux Server 02: 10.10.10.12

 

Kiểm Tra SCP Trên Linux

Thông thường SCP đã được cài sẵn cùng OpenSSH.

Kiểm tra bằng lệnh:

Zhost Tutorial
scp -V

Hoặc:

Zhost Tutorial
which scp

Ví dụ output:

Zhost Tutorial
/usr/bin/scp

 

Cài Đặt SCP Trên Linux

Thực tế SCP nằm trong package OpenSSH Client.

Ubuntu/Debian

Zhost Tutorial
sudo apt update
sudo apt install openssh-client -y

CentOS/AlmaLinux/Rocky Linux

Zhost Tutorial
sudo yum install openssh-clients -y

Hoặc với AlmaLinux/Rocky Linux 9

Zhost Tutorial
sudo dnf install openssh-clients -y

 

Cú Pháp SCP Trên Linux

Cú pháp cơ bản:

Zhost Tutorial
scp [OPTION] SOURCE DESTINATION
Trong đó:
Thành phần Ý nghĩa
scp Gọi lệnh SCP
OPTION Tùy chọn thêm
SOURCE File/thư mục nguồn
DESTINATION File/thư mục đích

 

Các Option SCP Thường Dùng

Option Chức năng
-r Copy thư mục
-P Chỉ định port SSH
-C Nén dữ liệu trước khi transfer
-i Sử dụng SSH Private Key
-p Giữ nguyên permission và timestamp
-l Giới hạn băng thông
-v Hiển thị log chi tiết
-c Chọn thuật toán mã hóa

 

Copy File Từ Local Sang Remote Server

Ví dụ copy file test1.txt từ Server 01 sang Server 02:

Zhost Tutorial
scp test1.txt 10.10.10.12:/root/
Thành phần Ý nghĩa
test1.txt File nguồn
root User SSH trên server đích
10.10.10.12 IP server đích
/root/ Thư mục lưu file

 

Xác Thực SSH Lần Đầu

Nếu lần đầu kết nối SSH đến server, hệ thống sẽ hỏi xác nhận fingerprint:

Zhost Tutorial
The authenticity of host '10.10.10.12' can't be established.
Are you sure you want to continue connecting (yes/no)?

Nhập:

Zhost Tutorial
yes

Sau đó nhập password của user remote.

 

Copy File Từ Remote Server Về Local

Ví dụ download file từ server về local:

Zhost Tutorial
scp 10.10.10.12:/root/test2.txt /home/

Lệnh trên sẽ copy:

Zhost Tutorial
/root/test2.txt

từ server remote về:

Zhost Tutorial
/home/
trên máy local.

 

Copy Nhiều File Cùng Lúc

Zhost Tutorial
scp test1.txt test2.txt 10.10.10.12:/root/

Các file chỉ cần cách nhau bằng dấu cách.

 

Copy Thư Mục Bằng SCP

Sử dụng option -r:

Zhost Tutorial
scp -r /home/data 10.10.10.12:/root/

Lệnh trên sẽ copy toàn bộ thư mục:

Zhost Tutorial
/home/data

sang server remote.

 

Hiển Thị Log Chi Tiết Khi Transfer

Dùng option -v:

Zhost Tutorial
scp -rv /home/data 10.10.10.12:/root/

Rất hữu ích khi debug lỗi SSH.

 

Nén Dữ Liệu Để Tăng Tốc Transfer

Dùng option -C:

Zhost Tutorial
scp -rC /home/data 10.10.10.12:/root/

SCP sẽ tự động:

  1. Nén dữ liệu trước khi gửi
  2. Truyền dữ liệu
  3. Giải nén ở máy đích

Phù hợp khi:

  • File text nhiều
  • Băng thông thấp
  • Transfer dữ liệu lớn

 

Giới Hạn Băng Thông

Nếu không muốn SCP chiếm toàn bộ bandwidth server:

Zhost Tutorial
scp -r -l 400 /home/data 10.10.10.12:/root/

Trong đó:

Zhost Tutorial
400

là giới hạn tốc độ theo đơn vị Kbit/s.

 

Sử Dụng Port SSH Khác 22

Nếu server remote đổi port SSH:

Zhost Tutorial
scp -P 8686 test1.txt 10.10.10.12:/root/

Lưu ý:

  • SCP dùng -P viết hoa
  • SSH dùng -p viết thường

Đây là lỗi rất nhiều người dễ nhầm.

 

Sử Dụng SSH Key Với SCP

Ví dụ dùng private key:

Zhost Tutorial
scp -i ~/.ssh/id_rsa test1.txt 10.10.10.12:/root/

Hoặc file .pem:

Zhost Tutorial
scp -i server.pem test1.txt 10.10.10.12:/root/

 

Giữ Nguyên Permission Và Timestamp

Dùng option -p:

Zhost Tutorial
scp -p test1.txt 10.10.10.12:/root/

SCP sẽ giữ nguyên:

  • Quyền file
  • Thời gian tạo
  • Thời gian chỉnh sửa

 

Thay Đổi Thuật Toán Mã Hóa

Mặc định SCP dùng AES.

Có thể đổi sang thuật toán khác:

Zhost Tutorial
scp -c [email protected] test1.txt 10.10.10.12:/root/

Lưu ý:

  • Một số thuật toán cũ như arcfour đã bị loại bỏ trên OpenSSH mới
  • Không nên dùng thuật toán yếu vì lý do bảo mật

 

Một Số Lỗi Thường Gặp

Permission denied

Nguyên nhân:

  • Sai password
  • Sai SSH key
  • User không có quyền ghi file

Kiểm tra:

Zhost Tutorial
ls -ld /root/

Connection refused

Nguyên nhân:

  • SSH chưa chạy
  • Sai port SSH
  • Firewall chặn

Kiểm tra:

Zhost Tutorial
systemctl status sshd

No such file or directory

Nguyên nhân:

  • Sai đường dẫn file
  • File không tồn tại

Kiểm tra:

Zhost Tutorial
ls -lah

Những Điều Cần Lưu Ý Khi Sử Dụng SCP

  • Sử dụng SSH để hoạt động — Nếu SSH bị tắt hoặc firewall chặn port SSH thì SCP sẽ không thể kết nối.
  • Dùng -P viết hoa cho port SSH — Đây là lỗi rất nhiều người nhầm với ssh -p.
  • Không resume tốt khi mất mạng — Nếu transfer file lớn bị ngắt kết nối thường sẽ phải copy lại từ đầu.
  • Nên sử dụng SSH Key thay vì password — Giúp tăng bảo mật và thuận tiện khi transfer tự động.
  • Có thể chiếm nhiều CPU và băng thông — Đặc biệt khi transfer file lớn hoặc dùng option nén -C.
  • Với dữ liệu lớn nên cân nhắc dùng RSYNC — rsync ổn định và hỗ trợ resume tốt hơn SCP.

 

Kết luận

SCP là công cụ đơn giản và hiệu quả giúp transfer file an toàn giữa các máy chủ Linux thông qua SSH. Với cú pháp dễ sử dụng và được tích hợp sẵn trên hầu hết hệ điều hành Linux như Ubuntu, CentOS hay AlmaLinux, SCP là công cụ rất hữu ích cho quản trị VPS và Server Linux. Hy vọng bài viết sẽ giúp bạn sử dụng SCP dễ dàng và hiệu quả hơn trong thực tế.