NỘI DUNG
Trong quá trình vận hành server/vps, sẽ có đôi lúc bạn cần copy/đồng bộ các file giữa 2 server với nhau, thì bằng cách nào để thực hiện, bạn không thể download rồi upload sẽ mất rất nhiều thời gian cho việc đó.
Ở Linux bạn sẽ thao tác nhanh hơn bằng SCP và RSYN, mới bạn cùng theo dõi.
1. Sử dụng lệnh scp
scp [option] <source_path> <your_user>@<destination_server>:<destination_path>
Trong đó:
[option] là tham số của lệnh scp, VD: -r để copy 1 thư mục
<source_path> là file/thư mục trên Server nguồn
<your_user> là 1 user trên Server đích
<destination_server> là địa chỉ IP hoặc domain name của Server đích
<destination_path> là đường dẫn của file/folder trên Server đích mà ta copy tới.
<-P> Port: Nếu Port thay đổi bạn thêm option này vào
VD:
- Lệnh này sẽ sử dụng port mặc định là 22
scp admin.root.admin.tar.gz root@103.221.220.105:/home/file_backup
- Nếu khác Port 22 ban cần thêm option -P vào.
Lệnh này mình di chuyển toàn bộ thư mục public_html với port 2222 đi nên có thêm option r
scp -rP 2222 /home/anhquan/public_html/ dotrungq@45.252.248.51:/home/dotrungq/wordpress.dotrungquan.info
Chú thích:
Mình đang đứng ở VPS có IP là 103.221.220.111 , mình thực hiện Copy file admin.root.admin.tar.gz đến VPS có IP là 103.221.220.105
- scp : cú pháp
- admin.root.admin.tar.gz : file cần copy
- root@103.221.220.105:/home/file_backup: IP và thực mục VPS cần copy đến
2. Sử dụng lệnh Rsync
Các Option
- -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
- –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.
- -p: Nếu port bạn đã thay đổi
Nếu phiên bản HDH Linux/Unix của bạn chưa có command này thì hãy sử dụng lệnh sau để cài đặt:
Với Centos
yum install -y rsync
Với Ubuntu
apt install -y rsync
Cú pháp thực hiện
# copy file/folder từ server hiện tại tới 1 remote server rsync [-options] <source_path> <your_user>@<destination_server>:<destination_path>
# Copy file/folder từ 1 remote Server tới server hiện tại rsync [-options] <your_user>@<source_server>:<source_path> <destination_path>
# rsync sử dụng ssh key và port rsync -avhP -e "ssh -i /Users/quan/.ssh/quan.key -p 2020" wordpress.zip root@103.220.220.220:/home/backup Ví dụ thực tế: rsync -avhP -e "ssh -i /Users/quan/.ssh/quan.key -p 2020" wordpress.zip root@103.220.220.220:/home/backup
VD:
rsync -azvh /home/admin/admin_backups/admin.root.admin.tar.gz root@103.221.220.105:/home/file_backup
rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
Chú thích:
Mình đang đứng ở VPS có IP là 103.221.220.111 , mình thực hiện rsync file admin.root.admin.tar.gz đến VPS có IP là 103.221.220.105
/home/admin/admin_backups/admin.root.admin.tar.gz: Đường dẫn đến file
root@103.221.220.105:/home/file_backup : IP và thư mục của VPS cần rsync đến