Cách sao chép tệp với lệnh SCP trong Linux

Tác giả: VPS chính hãng 06 tháng 08, 2023

SCP là tên viết tắt của Secure Copy Protocol (Giao thức sao chép an toàn). Sử dụng lệnh SCP quan trọng khi bạn quyết định sao chép tệp và thư mục giữa hai vị trí. SCP là một công cụ dòng lệnh giúp bạn cung cấp bảo mật cho các tệp của mình. Sử dụng SCP cho phép bạn sao chép nội dung được cân nhắc giữa các hệ thống trong Linux trên mạng. Vì nó sử dụng kết nối SSH để mã hóa các tệp và mật khẩu, ngay cả khi lưu lượng truy cập bị chặn, thông tin của bạn sẽ được mã hóa và bảo vệ. Ngoài ra, có thể sử dụng SCP trên Linux, Mac và Windows (sử dụng WinSCP). Trong bài viết này, hãy cùng chúng tôi tìm hiểu cách sử dụng lệnh SCP trong Linux để sao chép tệp.

SCP là gì? Khi nào bạn cần sử dụng nó?

SCP bảo vệ tệp của bạn qua kết nối SSH khi bạn cần sao chép chúng giữa hai máy tính. Để tránh bị những người theo dõi lưu lượng truy cập rình mò, cả tệp và mật khẩu đều được mã hóa trong khi SCP đang truyền dữ liệu. Với kết nối được mã hóa an toàn, công cụ dòng lệnh SCP là cách an toàn nhất để thực hiện các bản sao trong Linux. SCP kết nối thông qua kết nối mã hóa (SSH) và sử dụng cổng 22 theo mặc định.

Để sao chép tệp hoặc thư mục một cách an toàn, bạn có thể sử dụng SCP trong ba tình huống khác nhau:

  • Từ: Hệ thống/Máy chủ/Máy tính cục bộ của bạn. Đến: Hệ thống/Máy chủ/Máy tính từ xa.
  • Sao chép tệp từ: Máy tính/Máy chủ từ xa. Tới: Một máy tính/máy chủ từ xa khác.
  • Từ: Hệ thống từ xa/Máy chủ/Máy tính. Đến: Hệ thống cục bộ/Máy chủ/Máy tính.

Lưu ý: Nếu kết nối internet của bạn chậm, hãy chọn trường hợp thứ 2 vì lưu lượng truy cập trực tiếp từ máy chủ này sang máy chủ khác mà không thông qua hệ thống của bạn.

Lệnh SCP trong Linux được sử dụng để bảo vệ quá trình sao chép tệp

Lệnh SCP trong Linux được sử dụng để bảo vệ quá trình sao chép tệp

Điều kiện tiên quyết để sử dụng Lệnh SCP trong Linux

Rõ ràng, cần có một máy chủ Linux là bước bắt buộc đầu tiên để sử dụng SCP trong đó, tất nhiên đừng bỏ qua lựa chọn mua VPS Linux để có được hiệu suất tuyệt vời trong quá trình sử dụng. Vì cần trỏ đến các IP khác nhau nên giả sử IP của máy chủ đầu tiên là IP A, IP của máy chủ thứ hai là IP B và IP của máy chủ thứ ba là IP C. Hãy nhớ thay thế IP của chính bạn trong khi chạy các lệnh.

Để sử dụng thành công công cụ Lệnh SCP, hãy xem xét các tùy chọn bên dưới:

  • Đăng nhập shell an toàn trên hệ thống máy chủ.
  • Đặc quyền quản trị trên cả máy khách và máy chủ (tùy chọn).

Cú pháp hoàn chỉnh của lệnh SCP trong Linux

Cú pháp lệnh SCP và tất cả các giải thích bắt buộc của từng lệnh sẽ được trình bày dưới đây. Bạn sẽ sử dụng lệnh SCP để yêu cầu hệ điều hành sao chép tệp/các tệp qua kết nối shell an toàn (kết nối ssh). Trước tiên, hãy xem cú pháp sử dụng lệnh scp:

scp [option] [user_name@source_host:path/to/source/file] [user_name@target_host:target/path]

Bạn có thể tự do chỉ định cả tên người dùng và máy chủ trong nguồn gốc (user_name) và đích (target/path). Lệnh scp sẽ sao chép tệp cục bộ đến đích cục bộ nếu bạn tránh xác định tên người dùng và mật khẩu.

Ý nghĩa của các phần cơ bản của lệnh scp trong Linux:

  • Option: Bao gồm mật mã, cấu hình ssh, cổng ssh, giới hạn và bản sao là các tùy chọn scp.
  • User_name: Khi bạn chỉ định tệp/các tệp sẽ được sao chép, nó được gọi là tệp gốc. Nó chứa thông tin của máy chủ từ xa hoặc người dùng sở hữu tệp/các tệp trong máy chủ từ xa đó. Nếu bạn không chỉ định người dùng, nó sẽ mặc định là người dùng hiện tại trên máy. Và nếu bạn không chỉ định máy chủ lưu trữ, nó sẽ tìm kiếm tệp cục bộ bằng bất kỳ đường dẫn cụ thể nào.
  • Path/to/source: Nơi bạn chỉ định đường dẫn mà bạn muốn các tệp sẽ được sao chép. Rõ ràng, đây là điểm đến của bạn. Nó chứa thông tin của máy chủ từ xa hoặc người dùng trong máy chủ đó. Giống như tên người dùng, nếu bạn không chỉ định người dùng, nó sẽ mặc định là tên người dùng hiện tại. Vì vậy, nó sẽ đăng nhập vào máy chủ từ xa bằng người dùng đó. Và nếu bạn không chỉ định máy chủ, nó sẽ sao chép các tệp cục bộ. Bạn cần chỉ định các tệp cục bộ có đường dẫn tuyệt đối hoặc tương đối. Hãy nhớ rằng vì lệnh scp sẽ không kiểm tra vị trí đích trước khi ghi, nên tất cả các tệp ở đích có cùng tên sẽ bị ghi đè mà không có thông báo.

=>> Dùng lệnh ifconfig để cấu hình và quản lý giao diện mạng trong Linux

Cách sử dụng lệnh SCP trong Linux

Bạn nên xem xét các tùy chọn bên dưới khi làm việc với tệp từ xa và trước khi bắt đầu sử dụng lệnh scp.

  • Sử dụng tài khoản có ít nhất quyền đọc đối với tệp/các tệp bạn cần sao chép trên hệ thống nguồn.
  • Chỉ định thông số kỹ thuật của người dùng và máy chủ lưu trữ.
  • Sử dụng dấu hai chấm (:) để xem cách scp phân biệt giữa các vị trí cục bộ và từ xa.
  • Cung cấp khóa ssh hoặc mật khẩu để xác thực với hệ thống từ xa vì lệnh scp dựa vào ssh để truyền dữ liệu.
  • Sử dụng tài khoản có ít nhất quyền ghi vào từ điển nơi tệp/các tệp sẽ được lưu trên hệ thống đích.
  • Chạy lệnh scp bên trong màn hình hoặc phiên tmux bất cứ khi nào bạn chuyển các tệp lớn.
Lệnh SCP có đa dạng tùy chọn để sử dụng

Lệnh SCP có đa dạng tùy chọn để sử dụng

Cách tùy chỉnh lệnh SCP trong Linux

Có một số tùy chọn lệnh SCP cho phép bạn tăng tốc quá trình bằng cách tùy chỉnh nó. Bạn cần thêm các tùy chọn này làm thuộc tính ngay sau lệnh scp:

  • -o ssh_option – Đặt tùy chọn thành SSH ở định dạng ssh_config.
  • -S program – Sử dụng một chương trình được chỉ định cho kết nối mã hóa.
  • -i file – Chỉ định tệp để đọc danh tính để xác thực khóa công khai.
  • -P por – Chỉ định cổng để kết nối. Nếu không được chỉ định, SCP sử dụng cổng 22.
  • -l limit – Giới hạn băng thông (chỉ định giới hạn tính bằng Kbit/s).
  • -F file – Chỉ định tệp cấu hình thay thế cho SSH.
  • -D debug_level – Đặt mức gỡ lỗi (1, 2, 3 hoặc 99).
  • -c cipher – Chọn mật mã để mã hóa dữ liệu. Nếu không được chỉ định, SCP sử dụng giá trị mặc định – ‘AnyStdCipher’.
  • -b buffer_size – Chỉ định kích thước bộ đệm được sử dụng để truyền dữ liệu. Nếu không được chỉ định, sử dụng mặc định – 32768 byte.
  • -B – Chạy ở chế độ hàng loạt, vô hiệu hóa tất cả các truy vấn cho đầu vào của người dùng.
  • -C – Kích hoạt tính năng nén.
  • -d – Sao chép tệp, chỉ khi thư mục đích đã tồn tại.
  • -h – Hiển thị danh sách các tùy chọn lệnh.
  • -q – Chạy SCP ở chế độ im lặng.
  • -Q – Tắt hiển thị bất kỳ số liệu thống kê truyền tệp nào.
  • -r – Sao chép.
  • -u – Xóa tệp nguồn sau khi sao chép xong.
  • -v – Bật chế độ verbose, đặt mức gỡ lỗi thành 2.
  • -1 – Sử dụng giao thức 1.
  • -2 – Sử dụng giao thức 2.
  • -4 – Chỉ sử dụng địa chỉ IPv4.
  • -6 – Chỉ sử dụng địa chỉ IPv6.

10 ví dụ về lệnh SCP trong Linux

1. Sử dụng lệnh SCP để sao chép tệp máy chủ từ xa sang máy chủ cục bộ

Chạy lệnh bên dưới để sao chép một tệp từ máy chủ từ xa sang máy chủ cục bộ:

scp IP A:/home/remote_dir/sample_example.txt home/Desktop

Tham khảo thông tin:

  • root@IP A – Vị trí hiện tại của tệp trên máy chủ từ xa, cùng với tên người dùng và địa chỉ IP của nó.
  • /home/remote_dir/sample_example.txt – Chỉ định tên tệp bạn muốn sao chép và vị trí của tệp.
  • home/Desktop – Vị trí lưu trữ tệp đã sao chép.

2. Sử dụng lệnh SCP để sao chép tệp giữa hai máy chủ từ xa

Bạn không cần phải đăng nhập (ssh) vào một trong các máy chủ khi bạn đang truyền tệp/các tệp từ máy này sang máy khác từ xa.

scp root@IP A:/home/remote_dir/sample_example.txt username@IP B:home/Desktop

Kiểm tra thông tin của lệnh trên:

IP A- The username and location of the file being copied.
  • username@IP B– Tên người dùng và địa chỉ IP của máy chủ từ xa mà bạn muốn sao chép tệp.
  • home/Desktop – Vị trí trên máy chủ khác nơi sẽ lưu giữ tệp đã sao chép.

3. Sử dụng lệnh SCP để sao chép tệp cục bộ sang máy chủ từ xa

Tại đây, bạn có thể xem ví dụ sao chép một tệp từ máy chủ cục bộ sang máy chủ từ xa.

scp Desktop/sample_example.txt root@IP C:/home/remote_dir

Lệnh bao gồm:

  • Desktop/sample_example.txt – Tên và vị trí của tệp được sao chép.
  • root@IP c – Địa chỉ IP và tên người dùng của máy chủ từ xa.
  • /home/remote_dir – Vị trí lưu trữ tệp đã sao chép.

4. Sử dụng lệnh SCP để sao chép thư mục máy chủ cục bộ sang máy chủ từ xa

SCP có khả năng sao chép các thư mục đến hoặc từ các máy chủ ở xa một cách an toàn. Bạn có thể sử dụng lệnh bên dưới để sao chép một thư mục vào máy chủ từ xa.

scp -r example root@IP A:/home/remote_dir

Nó bao gồm các thông tin dưới đây:

  • -r – Lựa chọn sao chép thư mục theo cách đệ quy.
  • example – Tên của thư mục đang được sao chép từ máy chủ cục bộ.
  • root@IP A – Địa chỉ IP và tên người dùng của máy chủ ở xa nhận thư mục.
  • /home/remote_dir – Đường dẫn trên máy chủ từ xa nơi lưu trữ thư mục đã sao chép.

5. Sử dụng lệnh SCP để sao chép nhiều tệp bằng SCP

Sử dụng lệnh SCP trong Linux cho phép bạn sao chép nhiều tệp trong một lệnh. Như bạn có thể thấy bên dưới, có thể sao chép hai tệp từ máy chủ cục bộ sang máy chủ từ xa.

scp example/sample1.txt example/sample2.txt root@IP A:/home/remote_dir

Lệnh bao gồm:

  • example/sample1.txt – Tên và vị trí của tệp đầu tiên được sao chép.
  • example/sample2.txt – Tên và vị trí của tệp thứ hai đang được sao chép.
  • root@IP A – Địa chỉ IP và tên người dùng của máy chủ từ xa đang nhận tệp.
  • /home/remote_dir – Vị trí trên máy chủ khác nơi sẽ lưu giữ các tệp đã sao chép.

=>> Sử dụng lệnh File trong Linux để xác định loại tệp

6. Sử dụng lệnh SCP để sao chép tệp bằng SCP ở chế độ Verbose

Ví dụ này đặt mức gỡ lỗi thành 2 và sử dụng scp ở chế độ dài dòng bằng cách thêm -v. Theo cách này, việc in thông tin gỡ lỗi ở đầu ra sẽ giúp ích rất nhiều khi gặp sự cố. Như bạn thấy trong ví dụ sau, để bật chế độ verbose, bạn cần thêm lựa chọn -v sau scp:

scp -v Desktop/sample_example.txt root@IP A:/home/remote_dir

7. Sử dụng lệnh SCP trong Linux để sao chép tệp bằng SCP ở chế độ Im lặng

Bạn có thể tắt đồng hồ đo tiến trình và thông báo không có lỗi hiển thị ở đầu ra nếu bạn chạy scp ở chế độ thoát. Bạn chỉ cần thêm tùy chọn -q để làm điều này.

scp -q Desktop/sample_example.txt root@IP c:/home/remote_dir

8. Sử dụng lệnh SCP để sao chép tệp bằng mật mã cụ thể

Mặc dù SCP sử dụng AES-128 để mã hóa tệp theo mặc định, nhưng bạn có thể thay đổi mật mã mà SCP sẽ sử dụng để mã hóa tệp bằng cách sử dụng tùy chọn -c. Ví dụ sau đây cho bạn thấy cách bạn có thể tăng cường bảo mật bằng cách chuyển sang mã hóa 3des.

scp -c 3des Desktop/sample_example.txt root@IP A:/home/remote_dir

9. Sử dụng lệnh SCP để sao chép tệp bằng SCP và giới hạn băng thông

Lệnh SCP cũng được sử dụng để giới hạn băng thông trong Linux nếu bạn thêm tham số l. Bạn sẽ thấy nó hữu ích bất cứ khi nào bạn quyết định sao chép các tệp lớn để ngăn SCP rút băng thông.

Lưu ý: Chỉ định số tính bằng Kilobit/s khi bạn muốn giới hạn băng thông.

scp -l 800 Desktop/sample_example.txt root@IP A:/home/remote_dir

10. Sử dụng lệnh SCP để sao chép tệp bằng bằng cổng cụ thể

SCP sử dụng cổng 22 theo mặc định. Trong khi sử dụng một hệ thống từ xa được cấu hình để nghe các yêu cầu SSH trên một cổng khác, bạn có thể sử dụng khóa chuyển –P để chỉ định cổng.

Ví dụ dưới đây giúp bạn thấy cách bạn có thể sử dụng lệnh SCP trong Linux để sao chép tệp từ máy cục bộ sang máy chủ từ xa. Ở đây, cổng được sử dụng là 2222.

scp -P 2222  Desktop/sample_example.txt root@IP A:/home/remote_dir

Hãy xem các thành phần của lệnh trên là gì:

  • -P 2222 – sử dụng cổng 2222.
  • Desktop/sample_example.txt – Vị trí và tên của tệp bạn muốn sao chép.
  • root@IP A – Địa chỉ IP và tên người dùng của máy chủ từ xa đang nhận tệp.
  • /home/remote_dir – Vị trí trên máy chủ khác nơi sẽ lưu giữ tệp đã sao chép.

Trong bài viết này, VPS Chính hãng đã chia sẻ với các bạn về tiện ích của SCP và cách sử dụng lệnh SCP để sao chép tệp trong Linux. Nếu bạn đã sử dụng FTP, thì có lẽ bạn có thể nhận thấy rằng lệnh SCP là một sự thay thế lý tưởng cho nó vì FTP không an toàn theo mặc định. Nó cũng giúp bạn tạo một bộ lệnh để quản lý các tệp được xem xét giữa các máy chủ Linux. Chia sẻ quá trình sử dụng SCP của bạn ở dưới phần bình luận của bài viết. Cảm ơn đã theo dõi bài viết!