SCP là gì ?

  • SCP (Secure Copy – Sao chép an toàn) là một ứng dụng sử dụng SSH để mã hóa toàn bộ quá trình chuyển tập tin.
  • SCP là lệnh dùng để di chuyển file dữ liệu giữa các máy tính chạy hệ điều hành Linux từ xa.
  • SCP dùng ssh để di chuyển dữ liệu, có chế độ bảo mật giống như ssh.

Mô hình Lab

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

Cài đặt SCP lên Server Linux

Với các bản OS mới hiện nay, công cụ scp thường đã được tích hợp sẵn khi cài đặt hệ điều hành. Nếu server của bạn chưa được tích hợp sẵn, hãy chạy lệnh sau để cài đặt.

RedHat/Centos:

yum install scp -y

Debian/Ubuntu:

sudo apt-get install scp -y

 

Sử dụng SCP để Transfer file

Cấu trúc cú pháp

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

scp [option] <Source> <Destination>

Trong đó:

    • scp: là lệnh gọi công cụ scp
    • [option]: là các tuỳ trọn khi thực hiện trong quá trình truyền tải file
    • <Source>: Là đường dẫn đến file/folder nguồn thực hiện truyền tải.
    • <Destination>: Là đường dẫn đích lưu trữ file/folder khi truyền tải.

Một số Option thường sử dụng trong SCP như;

    • -r: Sử dụng cho việc truyền các thư mục.
    • -P: Sử dụng để khai báo cổng ssh máy chủ từ xa.
    • -C: Sử dụng để nén dữ liệu trước khi gửi.
    • -c: Sử dụng để chọn thuật toán mã hoá để truyền dữ liệu.
    • -v:  Cho ra kết quả output với nhiều thông tin hơn về những gì chương trình thực thi ở background.Điều này thường sẽ có ích khi chương trình lỗi hoặc không thể hoàn tất request đến. -v sẽ cho bạn thấy chính xác các thông tin chương trình hoạt động và có vấn đề như thế nào.

Lưu ý: bạn có thể kết hợp nhiều option vào một lệnh scp để tối ưu quá trình transfer file.

Transfer file từ Local Server sang Remote Server

Câu lệnh dưới đây sẽ thực hiện trên Linux Server 01 – 10.10.10.11.

Copy file test1.txt từ server Linux Server 01 sang server Linux Server 02 – 10.10.10.12:

scp test1.txt root@10.10.10.12:/root

Trong đó:

    • test1.txt là Source file
    • root là user trên Linux Server 02
    • 10.10.10.12 là IP của Linux Server 02
    • /root là đường dẫn đích trên server 2 sẽ copy tile test1.txt đến.

Nếu server không được cấu hình dùng SSH Key lần gửi file đầu tiên sẽ hiện thông báo như bên dưới, nhập yes để đồng ý sau đó nhập Password của User root trên Linux Server 02.

The authenticity of host '10.10.10.12 (10.10.10.12)' can't be established.
ECDSA key fingerprint is SHA256:MDFpkZS6ItewLELhvUFTqAuplNJv6xSF9cvmGbAgOf8.
ECDSA key fingerprint is MD5:97:5f:63:b9:44:b8:d1:8e:d9:b7:5a:71:08:0b:09:38.
Are you sure you want to continue connecting (yes/no)? yes
[email protected]'s password:

Copy file thành công:

test1.txt                                            100%     0        0.0KB/s         00:00

Tương tự như vậy, ta có thể sử dụng các lệnh như phía dưới.

 

Transfer file từ Remote Server sang Local Server

scp [email protected]:/root/test2.txt /home

Lệnh trên copy file test2.txt từ thư mục /root của server Linux Server 02 về thư mục /home của server Local.

 

Transfer nhiều file cùng một lúc

Bạn có thể chuyển (transfer) nhiều file bằng cách chỉ định các file và cách nhau một “khoảng trắng” .

 

Transfer thư mục

Để copy toàn bộ thư mục từ máy chủ này đến máy chủ khác bạn thêm option ‘-r‘ và chỉ định thư mục.

Lệnh trên sẽ copy thư mục /home/data từ server Local sang thự mục /root của server Linux Server 02. (thêm option -v để hiển thị tiến trình Transfer).

 

Nén dữ liệu trước khi Transfer

Một option cực hay để tăng tốc độ truyền tải nhầm tiết kiệm thời gian và băng thông. Tất cả những gì bạn cần làm là bật option ‘–C‘ để nén dữ liệu. Và kết quả dữ liệu sẽ được nén để chuyển đi và giải nén khi tới đích.

Lệnh trên sẽ copy thư mục /home/data từ server Local sang thự mục /root của server Linux Server 02. Trước khi chuyển đi, Server Local sẽ thực hiện nén toàn bộ dữ liệu trong thư mục data.

Giới hạn băng thông khi Transfer

Nếu bạn không muốn SCP chiếm toàn bộ băng Server, hãy sử dụng option ‘–l‘ để giới hạn băng thông tối đa cho việc gửi file đi tính bằng Kbit/s.

 

Thay đổi Port kết nối SSH đến Remote Server

Lệnh trên sẽ kết nối Server Local đến Linux Server 02 qua port 9900. Copy thư mục /home/data từ server Local sang thự mục /root của server Linux Server 02.

Giữ nguyên các thuộc tính của file cần Transfer

Sử dụng option ‘–p‘ (không viết hoa) sẽ giúp file giữ nguyên các thuộc tính như thời gian chỉnh sửa file, thời gian truy cập file…

 

Sử dụng SSH Key để xác thực

Trường hợp này áp dụng khi bạn sử dụng xác thực SSH bằng key, bạn sẽ cần chỉ định file private key, sử dụng option ‘-i’.

scp -p  -i /path/to/private_key.pem test1.txt [email protected]:/root

 

Sử dụng thuật toán mã hóa khác

Leave a Reply

Your email address will not be published.