Linux scp command

Lệnh scp trong Linux: Sao chép file an toàn và hiệu quả

Trong thế giới Linux, việc truyền tải dữ liệu giữa các máy tính là một nhu cầu thiết yếu. Lệnh scp (Secure Copy) chính là công cụ đắc lực giúp bạn thực hiện điều này một cách an toàn và hiệu quả. Bài viết này sẽ cung cấp cho bạn một cái nhìn toàn diện về lệnh scp, từ cú pháp cơ bản đến các ví dụ thực tế, giúp bạn làm chủ công cụ mạnh mẽ này.

Chúng ta sẽ cùng nhau khám phá:

  • scp là gì và tại sao nó quan trọng?
  • Cú pháp lệnh scp chi tiết và dễ hiểu.
  • Các tùy chọn thường dùng và cách sử dụng chúng.
  • Ví dụ thực tế với các tình huống cụ thể.
  • So sánh scp với các công cụ truyền tải file khác.
  • Giải đáp các câu hỏi thường gặp về scp.

scp là gì? Tại sao bạn nên sử dụng nó?

scp là một lệnh trong Linux dùng để sao chép file và thư mục giữa các máy tính thông qua giao thức SSH (Secure Shell). Điều này có nghĩa là dữ liệu của bạn sẽ được mã hóa trong quá trình truyền tải, bảo vệ nó khỏi những nguy cơ tiềm ẩn như nghe lén. So với các phương pháp truyền tải file không an toàn khác, scp mang lại sự an tâm tuyệt đối, đặc biệt khi bạn làm việc với dữ liệu nhạy cảm.

Sử dụng scp mang lại nhiều lợi ích:

  • An toàn: Dữ liệu được mã hóa, bảo vệ khỏi các cuộc tấn công.
  • Đơn giản: Cú pháp lệnh dễ học và dễ sử dụng.
  • Linh hoạt: Hỗ trợ sao chép file và thư mục giữa nhiều máy tính.
  • Phổ biến: Được hỗ trợ rộng rãi trên các hệ thống Linux và Unix.

Cú pháp lệnh scp

Cú pháp cơ bản của lệnh scp như sau:

scp [tùy chọn] [nguồn] [đích]

Trong đó:

  • [tùy chọn]: Các tùy chọn để điều chỉnh hành vi của lệnh scp.
  • [nguồn]: File hoặc thư mục cần sao chép.
  • [đích]: Vị trí đích để sao chép file hoặc thư mục đến.

Cả nguồn và đích có thể là một file/thư mục cục bộ hoặc một file/thư mục trên một máy tính từ xa. Để chỉ định một file/thư mục trên máy tính từ xa, bạn sử dụng cú pháp sau:

username@hostname:đường_dẫn

Trong đó:

  • username: Tên người dùng trên máy tính từ xa.
  • hostname: Địa chỉ IP hoặc tên miền của máy tính từ xa.
  • đường_dẫn: Đường dẫn đến file hoặc thư mục trên máy tính từ xa.

Các tùy chọn thường dùng của lệnh scp

Lệnh scp cung cấp nhiều tùy chọn để bạn có thể tùy chỉnh hành vi của nó. Dưới đây là một số tùy chọn thường dùng:

  • -r: Sao chép thư mục đệ quy (bao gồm tất cả các file và thư mục con).
  • -P port: Chỉ định cổng SSH (mặc định là 22).
  • -v: Hiển thị thông tin chi tiết trong quá trình sao chép.
  • -C: Bật nén dữ liệu trong quá trình truyền tải.
  • -p: Giữ nguyên thời gian sửa đổi, thời gian truy cập và chế độ của file.
  • -q: Ẩn thanh tiến trình và thông báo lỗi.
  • -i identity_file: Chỉ định file private key để xác thực.

Ví dụ:

  • scp -r /path/to/local/directory user@remotehost:/path/to/remote/directory: Sao chép thư mục /path/to/local/directory từ máy cục bộ sang thư mục /path/to/remote/directory trên máy remotehost với tên người dùng user.
  • scp -P 2222 user@remotehost:/path/to/remote/file /path/to/local/file: Sao chép file /path/to/remote/file từ máy remotehost (sử dụng cổng 2222) sang file /path/to/local/file trên máy cục bộ.

Ví dụ thực tế với lệnh scp

Để hiểu rõ hơn về cách sử dụng lệnh scp, chúng ta hãy xem xét một vài ví dụ thực tế:

  1. Sao chép một file từ máy cục bộ sang máy từ xa:
    scp my_document.txt user@192.168.1.100:/home/user/documents

    Lệnh này sẽ sao chép file my_document.txt từ máy cục bộ sang thư mục /home/user/documents trên máy có địa chỉ IP 192.168.1.100 với tên người dùng user. Bạn sẽ được yêu cầu nhập mật khẩu của người dùng user trên máy từ xa.

  2. Sao chép một file từ máy từ xa về máy cục bộ:
    scp user@192.168.1.100:/home/user/documents/report.pdf .

    Lệnh này sẽ sao chép file report.pdf từ thư mục /home/user/documents trên máy có địa chỉ IP 192.168.1.100 với tên người dùng user về thư mục hiện tại trên máy cục bộ (dấu . biểu thị thư mục hiện tại). Bạn sẽ được yêu cầu nhập mật khẩu của người dùng user trên máy từ xa.

  3. Sao chép một thư mục từ máy cục bộ sang máy từ xa (đệ quy):
    scp -r my_project user@192.168.1.100:/home/user/projects

    Lệnh này sẽ sao chép thư mục my_project (bao gồm tất cả các file và thư mục con) từ máy cục bộ sang thư mục /home/user/projects trên máy có địa chỉ IP 192.168.1.100 với tên người dùng user. Bạn sẽ được yêu cầu nhập mật khẩu của người dùng user trên máy từ xa.

  4. Sao chép file từ máy cục bộ sang máy từ xa bằng key SSH:
    scp -i ~/.ssh/id_rsa my_document.txt user@192.168.1.100:/home/user/documents

    Lệnh này sẽ sao chép file my_document.txt từ máy cục bộ sang thư mục /home/user/documents trên máy có địa chỉ IP 192.168.1.100 với tên người dùng user, sử dụng key SSH ~/.ssh/id_rsa để xác thực thay vì mật khẩu. Bạn cần đảm bảo đã thiết lập SSH key-based authentication trước đó.

So sánh scp với các công cụ truyền tải file khác

Mặc dù scp là một công cụ mạnh mẽ, nhưng nó không phải là lựa chọn duy nhất để truyền tải file. Dưới đây là so sánh giữa scp và một số công cụ phổ biến khác:

Công cụ Ưu điểm Nhược điểm Khi nào nên sử dụng
scp An toàn, đơn giản, được hỗ trợ rộng rãi. Chỉ hoạt động trên SSH, không hỗ trợ resume khi kết nối bị gián đoạn. Khi cần truyền tải file an toàn giữa các máy Linux/Unix và không cần tính năng resume.
rsync Hiệu quả (chỉ sao chép các phần thay đổi), hỗ trợ resume, nhiều tùy chọn. Phức tạp hơn scp. Khi cần truyền tải file lớn hoặc đồng bộ hóa thư mục thường xuyên và cần tính năng resume.
ftp Được hỗ trợ rộng rãi. Không an toàn (dữ liệu không được mã hóa). Chỉ nên sử dụng khi không có lựa chọn nào khác và không có yêu cầu bảo mật cao.
sftp An toàn (truyền tải qua SSH). Có thể chậm hơn scp trong một số trường hợp. Khi cần giao diện dòng lệnh để quản lý và truyền tải file qua SSH.

FAQ về lệnh scp

Dưới đây là một số câu hỏi thường gặp về lệnh scp:

  1. Tôi nhận được lỗi "Permission denied" khi sử dụng scp. Phải làm sao?

    Lỗi này thường xảy ra khi bạn không có quyền truy cập vào thư mục đích trên máy từ xa. Hãy kiểm tra lại quyền của bạn hoặc liên hệ với quản trị viên hệ thống để được cấp quyền.

  2. Làm thế nào để tăng tốc độ truyền tải file bằng scp?

    Bạn có thể sử dụng tùy chọn -C để bật nén dữ liệu trong quá trình truyền tải. Tuy nhiên, tùy chọn này có thể làm tăng tải cho CPU. Ngoài ra, hãy đảm bảo rằng kết nối mạng của bạn ổn định và có băng thông đủ lớn.

  3. Làm thế nào để sử dụng scp mà không cần nhập mật khẩu?

    Bạn có thể sử dụng SSH key-based authentication. Hãy tạo một cặp key SSH (public key và private key) và copy public key lên máy từ xa. Sau đó, bạn có thể sử dụng tùy chọn -i để chỉ định private key khi sử dụng scp.

  4. Tôi có thể sử dụng scp để truyền file giữa Windows và Linux không?

    Có, bạn có thể sử dụng các ứng dụng SSH client như PuTTY (cho Windows) để thực thi lệnh scp và truyền file giữa Windows và Linux. Bạn cần cài đặt OpenSSH server trên Windows để sử dụng scp từ Linux đến Windows.

Kết luận

Lệnh scp là một công cụ mạnh mẽ và hữu ích để sao chép file và thư mục giữa các máy tính trong môi trường Linux. Với cú pháp đơn giản, tính bảo mật cao và khả năng tùy biến linh hoạt, scp là một phần không thể thiếu trong bộ công cụ của bất kỳ người dùng Linux nào. Hy vọng rằng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để làm chủ lệnh scp và sử dụng nó một cách hiệu quả trong công việc hàng ngày.

Last Updated : 22/08/2025