Chia Sẻ File Giữa Các Thiết Bị Qua SCP Và SFTP Trên Linux

Việc truyền file giữa các máy tính trong mạng nội bộ là nhu cầu cơ bản của mọi lập trình viên và quản trị hệ thống. Dù bạn đang quản lý một server duy nhất hay cả một cụm máy chủ phân tán, việc chuyển file nhanh chóng và an toàn luôn là yếu tố quan trọng. SCP (Secure Copy Protocol) và SFTP (SSH File Transfer Protocol) là hai công cụ phổ biến nhất để thực hiện việc này một cách an toàn qua đường truyền SSH. Cả hai đều mã hóa dữ liệu trong suốt quá trình truyền, chống nghe lén hiệu quả trên mạng không tin cậy.

SCP Là Gì và Khi Nào Nên Dùng

SCP cho phép sao chép file hoặc thư mục giữa các host qua SSH. Dữ liệu được mã hóa bằng giao thức SSH, đảm bảo không ai có thể đọc được nội dung trong quá trình truyền. SCP hoạt động theo mô hình một chiều: chỉ sao chép từ nguồn đến đích, không hỗ trợ duyệt thư mục. Đây là công cụ lý tưởng cho những lần truyền nhanh, đơn giản.

Cú pháp sao chép cục bộ lên remote

scp /đường/dẫn/file.txt user@host:/đường/dẫn/đích/

Cú pháp tải file về từ remote

scp user@host:/đường/dẫn/file.txt /đường/dẫn/đích/

Sao chép thư mục với đệ quy

scp -r /đường/dẫn/thư_mục/ user@host:/đường/dẫn/đích/

Chỉ định cổng SSH tùy chỉnh

scp -P 2222 file.txt user@host:/đường/dẫn/đích/

Sử dụng khóa SSH thay vì mật khẩu

scp -i ~/.ssh/id_ed25519 file.txt user@host:/đường/dẫn/đích/

Giới hạn băng thông SCP

scp -l 1000 file.txt user@host:/đường/dẫn/đích/

Giới hạn băng thông tính bằng Kbit/s, hữu ích khi không muốn chiếm hết đường truyền trên shared network.

SFTP Khác SCP Ở Điểm Gì

SFTP hoạt động như một subsystem của SSH, cung cấp nhiều tính năng hơn SCP đáng kể. Với SFTP, người dùng có thể duyệt thư mục, tiếp tục truyền khi bị gián đoạn, quản lý quyền truy cập file, và thực hiện mọi thao tác file cơ bản từ xa. SFTP đặc biệt hữu ích khi dùng qua giao diện đồ họa với các công cụ như FileZilla hay WinSCP.

Kết nối SFTP cơ bản

sftp user@host

Các lệnh SFTP thường dùng

  • ls — liệt kê file trên remote
  • cd /đường/dẫn — chuyển thư mục remote
  • lcd /đường/dẫn — chuyển thư mục cục bộ
  • pwd — hiển thị thư mục remote hiện tại
  • lpwd — hiển thị thư mục cục bộ hiện tại
  • get file.txt — tải file về máy cục bộ
  • put file.txt — tải file lên remote
  • get -r thư_mục/ — tải thư mục đệ quy về
  • put -r thư_mục/ — tải thư mục lên remote đệ quy
  • rm file.txt — xóa file trên remote
  • rmdir thư_mục — xóa thư mục trống trên remote
  • chmod 755 file — thay đổi quyền truy cập file
  • ls -l — liệt kê chi tiết file với quyền và kích thước

So Sánh Chi Tiết SCP Và SFTP

Tính năng SCP SFTP
Đơn giản Nhanh, một lệnh duy nhất Yêu cầu phiên tương tác
Tiếp tục truyền Không hỗ trợ resume Hỗ trợ resume khi bị gián đoạn
Duyệt thư mục Không hỗ trợ Hỗ trợ duyệt thư mục đầy đủ
Tốc độ Nhanh hơn do đơn giản hơn Chậm hơn nhẹ do giao thức phức tạp
Script automation Phù hợp cho scripting Cần công cụ bổ trợ
Quản lý quyền Hạn chế Chỉnh sửa quyền truy cập file
Giao diện đồ họa Chỉ dòng lệnh Hỗ trợ FileZilla, WinSCP, Nautilus
Bảo mật SSH encryption SSH encryption
A1 Server
A1 Server

Thực Hành: Tự Động Hóa Triển Khai Với SCP

Trong quy trình DevOps hiện đại, việc triển khai code lên server thường dùng SCP kết hợp SSH key authentication để loại bỏ việc nhập mật khẩu. Đây là bước cơ bản nhưng quan trọng trong bất kỳ pipeline CI/CD nào.

Thiết lập SSH key authentication

ssh-keygen -t ed25519 -C "automation-key"
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

Script triển khai tự động

#!/bin/bash
set -e
echo "Bắt đầu triển khai..."
scp -r ./build/ user@server:/var/www/app/
ssh user@server "systemctl restart nginx"
echo "Triển khai hoàn tất."

Sử dụng rsync thay cho SCP khi đồng bộ dữ liệu lớn

Rsync qua SSH tiết kiệm băng thông hơn SCP vì chỉ truyền phần file đã thay đổi, không phải toàn bộ nội dung. Đây là lựa chọn tốt hơn cho các tác vụ đồng bộ thường xuyên.

rsync -avz -e ssh ./source/ user@server:/đường/dẫn/đích/

Bảo Mật Khi Truyền File

  • Luôn dùng SSH key thay vì mật khẩu để tránh brute force
  • Hạn chế quyền truy cập SSH qua chỉ thị AllowUsers trong sshd_config
  • Thay đổi cổng SSH mặc định từ 22 để giảm tấn công tự động
  • Sử dụng rsync qua SSH cho các bản đồng bộ dữ liệu lớn — hiệu quả hơn
  • Cấu hình StrictHostKeyChecking để chống man-in-the-middle attack
  • Quét file trước khi truyền bằng gpg hoặc sha256sum để đảm bảo toàn vẹn
  • Vô hiệu hóa đăng nhập root qua SSH trong tệp cấu hình
A1 Unsplash2
A1 Unsplash2

Kết Luận

SCP phù hợp cho việc sao chép nhanh, đơn giản giữa hai máy tính. SFTP phù hợp khi cần quản lý file linh hoạt, đặc biệt khi upload qua giao diện đồ họa với các tool như FileZilla hay WinSCP. Cả hai đều kế thừa bảo mật của SSH, đảm bảo dữ liệu cá nhân không bị rò rỉ khi truyền qua mạng không tin cậy. Lập trình viên nên nắm vững cả hai công cụ này để linh hoạt trong mọi tình huống quản trị hệ thống.

Tham khảo thêm: Trang hướng dẫn SCP trên man7.orgTrang hướng dẫn SFTP trên man7.org.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Tối Ưu Pin iPhone: Hướng Dẫn Chi Tiết Cho Người Dùng iOS

Tại Sao Pin iPhone Giảm Tốc Độ? Pin lithium-ion iPhone tự nhiên suy giảm theo thời gian sử dụng. Sau 500 chu kỳ sạc hoàn chỉnh (full discharge → full…

Xem thêm

Zsh Và Oh My Zsh: Hướng Dẫn Cấu Hình Terminal Tối Ưu Cho Dev

Zsh Và Oh My Zsh: Hướng Dẫn Cấu Hình Terminal Tối Ưu Cho Dev Terminal Zsh với syntax highlighting và git integration Oh My Zsh prompt với git branch information…

Xem thêm

SSH Key Quản Lý Server Linux An Toàn

SSH Key Quản Lý Server Linux An Toàn SSH Key Quản Lý Server Linux An Toàn SSH key là phương thức xác thực mạnh nhất cho server Linux, thay thế…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất