Sử dụng lệnh SCP và RSYNC trên Linux
I. Giới thiệu
Trong quá trình sử dụng VPS/Server chắc hẳn có lúc bạn cần di chuyển dữ liệu từ VPS này sang VPS khác hoặc từ Server này sang Server khác.
Bài viết này mình sẽ giới thiệu cho các bạn 2 cách để di chuyển dữ liệu qua lại giữa 2 máy chủ
II. Các bước thực hiện
1. Sử dụng SCP để di chuyển dữ liệu
Bước 1: Cài đặt SCP
SCP (Secure Copy) là một ứng dụng trong Linux sử dụng giao thức SSH để copy dữ liệu qua lại giữa 2 máy chủ Linux. Trước khi thực hiện bạn cần cài SCP
Trên Debian/Ubuntu
apt-get install scp
Trên RHEL/CentOS
yum install scp -y
Bước 2: Sử dụng SCP
Cú pháp thực hiện
scp -option source_file username@IP_host:/destination_folder
Ý nghĩa:
- scp: Lệnh thực hiện
- -option: Các tùy chọn phụ
- source_file: File/Folder cần copy
- username@IP_host: Tên user và IP của máy chủ nhận file (Ví dụ: root@192.168.1.100)
- destination_folder: Thư mục đích cần copy đến
Một số option quan trọng cần dùng:
- -P: Port xác định chính xác cổng vào của server (port mặc định của TCP là 22) (Ví dụ máy đích port ssh mặc định là 999 thì bạn sẽ cần nhập là -P 999)
- -c: Cipher giúp bạn xác định thuật toán mã hóa bạn muốn dùng. Một số giá trị bạn có thể đưa vào là
aes256-ctr
,aes256-cbc
,blowfish-cbc
,arcfour
,arcfour128
,cast128-cbc
,aes128-ctr
,aes128-cbc
,aes192-ctr
,aes192-cbc
,3des-cbc
. Lựa chọn mặc định trong cấu hình làAnyStdCipher
- -q: Vận hành trong chế độ im lặng, chỉ khi có lỗi nghiêm trọng mới hiện lên
- -r: Recursive copying, có nghĩa là bao gồm các thư mục con nếu muốn copy cả folder
- -4 hoặc -6 được chọn khi bạn muốn chọn phiên bản IPv4 hoặc IPv6
- -p là
preserve
dùng để lưu lại thời gian chỉnh sửa và thuộc tính của file - -u sẽ xóa file nguồn sau khi chuyển đổi hoàn tất
- -c giúp nén dữ liệu khi truyền
Ví dụ: Ở đây mình có 2 VPS là 172.16.3.150 và 172.16.3.151
- Máy nguồn: 172.16.3.150
- Máy đích: 172.16.3.151
Tại máy nguồn mình copy file tubt1.txt
tại thư mục /mnt
đến máy đích với thư mục /home/scp
Cú pháp
scp /mnt/tubt1.txt root@172.16.3.151:/home/scp/
2. Sử dụng Rsync để đồng bộ dữ liệu
Ngoài SCP ra ta có thể sử dụng Rsync để có thể copy và đồng bộ dữ liệu máy chủ nội bộ hoặc máy chủ từ xa. Với máy chủ cài đặt Rsync thì đều có thể di chuyển hoặc đồng bộ dữ liệu giữa các máy chủ với nhau
Bước 1: Cài đặt Rsync trên Linux
Trên Debian/Ubuntu:
apt-get install rsync
Trên RHEL/CentOS:
yum install rsync -y
Bước 2: Sử dụng Rsync
Cú pháp:
rsync -option source_file username@IP_host:/destination_folder
Ý nghĩa:
- Rsync: Lệnh thực hiện
- -option: Các tùy chọn phụ
- source_file: File/Folder cần copy/đồng bộ
- username@IP_host: Tên user và IP của máy chủ nhận file (Ví dụ: root@192.168.1.100)
- /destination_folder: Thư mục đích cần copy đến
Một số option quan trọng trong rsync
- -v: Hiển thị trạng thái kết quả
- -r: Copy dữ liệu nhưng không đảm bảo thông số của file và thư mục (Ví dụ như quyền)
- -a: Cho phép copy dữ liệu, đồng thời giữ nguyên được thông số của thư mục và file
- -z: Nén dữ liệu khi transfer, tiết kiệm băng thông tuy nhiên sẽ tốn thời gian để nén sau đó mới thực hiện transfer
- -e ‘ssh -p PORT’: Tùy chọn khi sử dụng port ssh riêng ( Ví dụ port đích là 999 thì bạn sẽ cần nhập là -e ‘ssh -p 999’)
- -delete: Xóa dữ liệu ở destination nếu source không tồn tại dữ liệu đó
- -exclude: Loại trừ những dữ liệu không muốn truyền đi, nếu bạn cần loại ra nhiều file hoặc folder ở nhiều đường dẫn khác nhau thì mỗi cái bạn phải thêm -exclude tương ứng
Ví dụ:
Tại máy nguồn mình sẽ thực hiện tạo file tubt.txt
tại thư mục /mnt
và thêm vào nội dung như bên dưới:
[root@tubt mnt]# vi tubt.txt
[root@tubt mnt]# cat tubt.txt
Tu123
Tu456
Tu789
Tại máy đích, mình sẽ thực hiện tạo file tubt.txt
tại thư mục /home/rsync
và thêm vào nội dung như bên dưới:
[root@tubt-client1 rsync]# vi tubt.txt
[root@tubt-client1 rsync]# cat tubt.txt
Tu123
Thực hiện đồng bộ file dữ liệu của file tubt.txt
từ máy nguồn sang máy đích
Cú pháp:
rsync -av /mnt/tubt.txt root@172.16.3.151:/home/rsync
[root@tubt mnt]# rsync -av /mnt/tubt.txt root@172.16.3.151:/home/rsync
sending incremental file list
tubt.txtsent 111 bytes received 41 bytes 304.00 bytes/sec
total size is 18 speedup is 0.12
Tại máy chủ đích kiểm tra dữ liệu của file tubt.txt
đã được đồng bộ giống với file tubt.txt
tại máy chủ nguồn hay chưa
[root@tubt-client1 rsync]# vi tubt.txt
[root@tubt-client1 rsync]# cat tubt.txt
Tu123
[root@tubt-client1 rsync]# cat tubt.txt
Tu123
Tu456
Tu789
III. Tổng kết
Hy vọng bài viết này mang lại nhiều điều hữu ích cho các bạn trong quá trình di chuyển, đồng bộ dữ liệu giữa các máy chủ với nhau một cách an toàn và dễ dàng. Giúp bạn tiết kiệm được nhiều thời gian cũng như chủ động trong việc quản trị máy chủ
Chúc các bạn thành công và hẹn gặp lại các bạn trong các bài viết tiếp theo tại wiki.nhanhoa.com