Hầu hết mọi người thường quen dùng WinSCP copy dữ liệu trên máy chủ linux về. Ví dụ như đang cài webserver trên VPS Linode muốn copy file từ VPS khác của Vultr chẳng hạn thì làm thế nào với cái màn hình đen xì ấy không lẽ nhảy lên Windows chạy WinSCP rồi copy từ Vultr về rồi lại từ máy Windows đẩy file ngược lên Linode, nghe có vẻ ngu ngu nhỉ 🙂 hì, vẫn rất nhiều bạn đang làm theo cách đó đấy.
Để giải quyết vấn đề mình giới thiệu với các bạn ứng dụng SCP công cụ mình hay dùng để truyền dữ liệu từ VPS sang VPS trên linux.
Giới thiệu lệnh SCP
SCP – Secure Copy là một ứng dụng sử dụng giao thức SSH thường dùng để copy dữ liệu từ máy linux sang linux.
Cài đặt SCP
Thường thì SCP được cài sẵn trên linux, nếu chưa có gõ lệnh.
Ubuntu/Debian
apt-get install scp
RedHat/Centos:
yum install scp
Sử dụng SCP
Mô hình:
- Client: IP 192.160.0.2 máy gửi dữ liệu, chúng ta ngồi trược tiếp trên máy này gõ lệnh gửi file.
- Server: IP 192.160.0.3 User root, pass 123456, máy nhận dữ liệu.
Cú pháp lệnh cơ bản
scp source_file username@destination_host:/destination_folder
Đẩy file test.txt từ client lên server /root/bak
scp test.txt root@192.160.0.3:/root/bak
Nếu server không được cấu hình dùng SSH Key lần gửi file sẽ hiện thông báo như bên dưới, nhập yes
để đồng ý.
The authenticity of host '192.160.0.3 (192.160.0.3)' can't be established.
RSA key fingerprint is d6:38:38:48:98:33:72:9a:be:a5:e3:8c:e5:5e:9d:4c.
Are you sure you want to continue connecting (yes/no)?yes
Muốn truyền nhiều file cùng lúc dùng lệnh
scp test.txt nginx.conf root@192.160.0.3:/root/bak
Copy cả thử mục backup từ client lên server dùng tham số -r
scp -r /var/backup root@192.160.0.3:/root/bak
Nếu VPS của bạn không dùng port SSH mặc định bạn thêm tham số -P port_number
chữ P viết hoa nhé.
scp -P 2222 /var/backup/test.txt root@192.160.0.3:/root/bak
Giờ mình muốn copy dữ liệu ngược lại từ server về client thì thế nào, gõ lệnh:
scp root@192.160.0.3:/root/bak/test.txt /var/
Kết bài
SCP là công cụ truyền tập tin an toàn trên mạng đơn giả dễ dùng, nó sao chép tất cả những gì được chỉ định đến các máy chủ khác nhau nhưng tính năng của nó cũng dừng lại ở đó thôi.
Để linh hoạt hơn bài tới mình sẽ giới thiệu với các bạn về rsync trên linux công cụ chuyên dùng để backup và đồng bộ dữ liệu, ngoài những tính năng của SCP nó có thể kiểm tra được sự sai khác của tập tin, bỏ qua không copy nhưng tập tin đã tồn tại trên server.
Máy client là máy tính cá nhân mình đang dùng thì sao bạn? Làm sao để nó xác định được IP hoặc tên của máy tính cá nhân?
Máy cá nhân(Linux) bạn dùng lệnh scp copy file như bình thường thôi. Bạn có thể lên google search keyword ” my ip address” là biết IP Public của mình.
Cảm ơn bạn nhiều
scp -P 9927 root@133.242.174.188:/wp-config.php 61.122.112.97:/Users/tonghoa/Desktop
Mình đã search IP và trên là câu lệnh của mình. Nhưng nó báo lỗi: ssh: connect to host 61.122.112.97 port 2222: Connection timed out
lost connection
Ko hiểu sao lại vậy nhỉ?
Anh ơi anh làm bài hướng dẫn sử dụng Rsync để backup từ vps này sang vps # đi anh 🙂 hóng bài viết của anh lâu rồi mà chưa thấy.
Ok bạn, hẹn ban ở bài tới