Sử dụng SCP command để chuyển file trong Linux

SCP (Secure Copy) là file transfer protocol (giao thức chuyển file trên mạng), giúp di chuyển file trong hệ thống mạng an toàn và dễ dàng. Nó có thể chuyển file giữa một máy tính cá nhân đến máy chủ từ xa, hoặc chuyển file giữa 2 máy tính từ xa.

Cú pháp của SCP Command

Cú pháp đơn giản của SCP command (syntax) như sau:

scp [other options] [source username@IP]:/[directory and file name] [destination user]

Trong đó:

  • [other options] là tham số bạn có thể thêm vào SCP command.
  • [source username@IP] là username và IP của máy có file bạn muốn.
  • [directory and file name] đường dẫn chứa file, và tên của nó.
  • [destination username@IP] là username và IP của máy đích
  • [destination directory] là thư mục đích nơi file được lưu

VD1: Copy file có tên là test.txt trên Server A tới Server B có địa chỉ IP là 10.0.2.2 và lưu nó tại thư mục /tmp, chúng ta dùng command sau:

scp test.txt [email protected]:/tmp

VD2: Copy thư mục /home/userA/database trên Server A tới Server B

scp -r /home/userA/database [email protected]:/tmp

Tạo ssh key để bảo mật

Để chứng thực kết nối, chúng ta cần tạo ssh key pari trong terminal bằng lệnh sau:

ssh-keygen -t rsa

Copy khóa này vào máy tính từ xa bằng lệnh:

ssh-copy-id user@remote_A

Khi bạn đã chứng thực trên máy tính từ xa, public key sẽ được copy và đã có thể chuyển file.

Nếu không nhớ mật khẩu root cho cả 2 máy, bạn có thể dùng ssh client để chọn file private identity key để RSA được đọc tự động.

Đường dẫn mặc định của host key đặt ở ~/.ssh/id_rsa.

Đối với đường dẫn /home/userA/.ssh/id_rsa , lệnh như sau:

ssh -i /home/userA/.ssh/id_rsa [email protected]

Copy file local lên máy từ xa

Chúng ta sẽ copy một file có tên data.zip, tới máy tính từ xa có tên root. Sau tên username sẽ là IP máy server

Ví dụ:

scp /users/Nam/desktop/data.zip [email protected]:/home/data

Nếu bạn không có cấu hình ssh client tự động được cài đặt, bạn sẽ được hỏi nhập mật khẩu từ máy tính từ xa như sau:

[email protected]’s password:
data.zip   100% 0 0.0KB/s 00:00

Nếu SSH trên port khác port mặc định 22. Trong trường hợp này, bạn cần chỉ định port cho nó:

scp -P 2322 /users/Nam/desktop/data.zip [email protected]:/home/data

Nếu bạn muốn thay đổi tên file trong quá trình copy, bạn cần nhập lệnh sau trong SCP Linux:

scp /users/Nam/desktop/data.zip [email protected]:/home/data/data_backup.zip

Nếu muốn copy một thư mục có tất cả file và thư mục con, sử dụng tham số –r như chúng tôi đã giải thích ở trên:

scp -r /users/Nam/desktop [email protected]:/home/data

Copy file từ máy chủ từ xa về máy local

Trong tiến trrình này, bạn chỉ cần đảo ngược chỗ vị trí nguồn và vị trí đích là được.

scp [email protected]:/home/data/data.zip Users/Nam/Desktop

Sau đó bạn sẽ cần nhập thông tin đăng nhập SSH, hoặc bạn đã buộc SSH client sử dụng private key trên máy tính của bạn.

Copy file file từ một máy từ xa đến máy từ xa khác

Để copy từ một remote host (máy từ xa) đến một remote host khác, bạn sẽ cần nhập password cho cả 2 tài khoản của cả 2 máy để chạy lệnh trong terminal.

Ví dụ:

scp [email protected]:/home/data/data.zip [email protected]:/public

Lệnh trên copy file nguồn /home/data/data.zip từ host đầu tiên đến host thứ 2. Để copy folder, chỉ cần thêm option -r và xác định đường dẫn thư mục thay vì file bên trong nó.

Trong điều kiện bình thường, file sẽ đi thẳng tới remote host. Tuy nhiên, nếu bạn muốn chuyển hướng để đi thông qua máy của bạn, bạn có thêm option -3:

scp -3 [email protected]:/home/data/data.zip [email protected]:/public

Lời kết

Trong bài này, mình đã chia sẻ các bạn cách chuyển file vô cùng tiện lợi giữa các máy tính từ xa, giữa máy tính từ xa với máy local bằng scp command. Các làm việc với nhiều server bao nhiêu bạn sẽ thấy nó lợi hại bấy nhiêu. Giao thức copy file an toàn này còn đảm bảo copy thành công mà không phải đăng nhập. Chúc các bạn thành công!

Bài viết liên quan

Leave a Reply

Your email address will not be published. Required fields are marked *