Nội dung
Ở bài viết này AZDIGI sẽ hướng dẫn bạn Sử dụng SCP và RSYNC để di chuyển dữ liệu trên Linux hãy cùng AZDIGI thực hiện nhé.
I. TỔNG QUAN
Trong quá trình sử dụng máy chủ server/vps 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 để sử dụng. VPS setup sẳn Controller bạn có thể sử dụng chức năng mà Controller hỗ trợ để di chuyển. Nhưng nếu không hỗ trợ hoặc dữ liệu quá lớn mà panel không đáp ứng đủ thì bằng cách nào để bạn thực hiện. Và với bài viết này AZDIGI sẽ chia sẽ đến bạn 2 tool là SCP và RSYNC. Và đây cũng là cách mà Phòng kỹ thuật hỗ trợ các bạn di chuyển dữ liệu từ đơn vị khác về.
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 từ máy Linux sang máy Linux. Trước khi thực hiện bạn hãy cài đặt SCP nếu chưa có.
Trên Ubuntu/Debian
apt-get install scp
Trên RedHat/CentOS
yum install scp -y
Bước 2: Sử dụng SCP
Mô hình thực hiện SCP
- IP Client: Máy gửi dữ liệu, bạn sẽ thực hiện trên máy này.
- IP server: Máy nhận dữ liệu, bạn sẽ thực hiện trên máy này.
Cú pháp thực hiện:
scp -option source_file username@destination_host:/destination_folder
Chú thích tập lệnh:
- scp: Lệnh scp thực hiện
- -option: Các tùy chọn phụ
- source_file: File/Thư mục cần copy
- Username@destination_host: tên user và IP/hostname (Ví dụ root@45.252.252.252)
- /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 là 2222 thì bạn sẽ nhập là -P 2222)
- –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ể đặt vào là ‘aes256-ctr’, ‘aes256-cbc’, ‘blowfish-cbc’, ‘arcfour’, ‘arcfour128’, ‘arcfour256’, ‘cast128-cbc’, aes128-ctr’, ‘aes128-cbc’, ‘aes192-ctr’, ‘aes192-cbc’, and 3des-cbc’. Lựa chọn mặc định trong cấu hình là ‘AnyStdCipher’
- –q sẽ vận hành trong chế độ im lặng, có nghĩa là chỉ có các lỗi nghiêm trong mới hiện lên.
- –r là recursive copying, có nghĩa là bao gồm tất cả thư mục con.
- -4 hoặc -6 được dùng khi bạn muốn chọn phiên bản protocol IPv4 hay 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ụ thực tế:
Mình sẽ ví dụ thực tế để bạn dể hình dụng và thực hiện hơn. Ở đây mình có 2 VPS với địa chỉ IP và tên mô tả như sau để bạn dễ biết đâu là máy nguồn và đâu là máy đích.
- Máy Nguồn: 103.110.84.109
- Máy Đích: 103.221.220.27
Tại máy nguồn mình copy 1 file có tên là backup-06-10.zip tại thư mục /home/lab1
đến máy đich với thư mục là /home/lab2
Cú pháp thực hiện trong ví dụ
scp /home/lab1/backup-06-10.zip root@103.221.220.27:/home/lab2
Trong đó:
- scp: Lệnh scp
- /home/lab1/backup-06-10.zip: Đường dẫn file
- root@103.221.220.27: Máy ĐÍCH cần chuyển file đến
- /home/lab2: Thư mục lưu file ở máy Đích
2. Sử dụng Rsync để đồng bộ dữ liệu
Ngoài SCP ở trên mình xin chia sẽ thêm một công cụ có thể copy và động bộ dữ liệu máy chủ nội bộ hoặc các máy chủ từ xa, đó chính là Rsync. Với máy chủ có cài đặt Rsync thì đều có để di chuyển hoặc động bộ dữ liệu giữa các máy chủ với nhau. Việc động bộ rất tốn thời gian nhưng với Rsync thì hoàn toàn có thể làm được giúp bạn tiết kiệm rất nhiều thời gian.
Bước 1: Cài đặt Rsync trên Linux
Trên Debian/Ubuntu
apt-get install rsync
Trên RedHat/CentOS
yum install rsync
Bước 2: Sử dụng Rsync
Mô hình thực hiện Rsync
- IP Client: Máy gửi dữ liệu, bạn sẽ thực hiện trên máy này.
- IP server: Máy nhận dữ liệu, bạn sẽ thực hiện trên máy này.
Cú pháp thực hiện:
rsync -option source_file username@destination_host:/destination_folder
Chú thích tập lệnh:
- Rsync: Lệnh rsync thực hiện
- -option: Các tùy chọn phụ
- source_file: File/Thư mục cần copy
- Username@destination_host: tên user và IP/hostname (Ví dụ root@45.252.252.252)
- /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 recursively, nhưng không đảm bảo thông số của file và thư mục
- -a: cho phép copy dữ liệu recursively, đồng thời giữ nguyên được tất cả cá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 tốn thêm một chút thời gian
- -h: human-readable, output kết quả dễ đọc
- -e ‘ssh -p PORT’: Tùy chọn khi sử dụng port ssh riêng (Ví dụ máy Đích port SSH là 22 bạn sẽ sử dụng là -e ‘ssh -p 2222’)
- –delete: xóa dữ liệu ở destination nếu source không tồn tại dữ liệu đó.
- –exclude: loại trừ ra 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ụ thực tế:
Mình sẽ ví dụ thực tế để bạn dể hình dụng và thực hiện hơn. Ở đây mình có 2 VPS với địa chỉ IP và tên mô tả như sau để bạn dễ biết đâu là máy nguồn và đâu là máy đích.
- Máy Nguồn: 103.110.84.109
- Máy Đích: 103.221.220.27
Tại máy nguồn mình sẽ động bộ một bộ mã nguồn WordPress tại thư mục /home/lab1
đến máy đich với thư mục là /home/lab2
Cú pháp thực hiện
rsync -azvh /home/lab1/* root@103.221.220.27:/home/lab2
Trong đó:
- rsync: lệnh đồng bộ
- -avzh: Các option đi kèm (Bạn có thể xem chú thích các option ở trên)
- /home/lab1/* : Thư mục Nguồn, đồng bộ toàn bộ các file và thư mục trong thư mục lab1 (Dấu * có nghĩa là tất cả)
- root@103.221.220/27: Máy Đích, máy mà đồng bộ file đến
- /home/lab2: Thư mục máy đích, các file sẽ được lưu tại đây.
Ảnh minh họa trong quá trình rsync.
Lưu ý: Nếu dữ liệu quá lớn và bạn không thể ngồi theo dõi trong quá trình di chuyển. Hãy sử dụng Screen để thực hiện.
III. TỔNG KẾT
Qua bài hướng dẫn Sử dụng SCP và RSYNC để di chuyển dữ liệu trên Linux hi vọng bài viết này mang lại nhiều điều hữu ích cho bạn trong quá trình di chuyển, đồng bộ dữ liệu ở 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 được trong việc quản trị vận hành dữ liệu.