Sử dụng Rsync đồng bộ thư mục trên Linux và Windows

Cài đặt Rsync trên mạng lưới hệ thống Linux CentOS, Ubuntu, macOS thực thi đồng nhất thư mục giữa local và remote, giữa máy Windows với máy Linux, macOS

Rsync là gì?

Rsync ( remote sync ) là công cụ đồng nhất file, thư mục của Linux. Nó sử dụng thuật toán khi copy tài liệu sao cho tài liệu phải copy là nhỏ nhất ( chỉ copy những gì đổi khác giữa nguồn và gốc ), khi đồng điệu nó giữ nguyên mọi thuộc tính của file, thư mục ( từ chủ sở hữu, quyền truy vấn file … ). Mặc định hầu hết những bản phân phối Linux có sẵn công cụ này, nếu chưa có thì cài vào :

# TRÊN CENTOS / RED HAT

#

yum install rsync # TRÊN UBUNTU # apt-get install rsync

Rsync cơ bản

# rsync -a thư_mục_nguồn thư_mục_đích

Giả sử trên máy chúng ta có thư mục dir1/ trong nó chứa nhiều file, thư mục con. Giờ muốn đồng bộ
toàn bộ nội dung thư mục dir1 vào một thư mục ở vị trí khác là dir2 (2 thư mục này cùng nằm
trên một hệ thống – 1 máy), thì thực hiện lệnh sau:

# rsync -a dir1/ dir2

Tham số -a (Archive) cho biết sẽ đồng bộ tất cả các file, thư mục con trong dir1.

Nếu muốn rsync kiểm tra thông tin dir1, dir2 trước khi thi hành thì thêm thiết
lập -n, nếu muốn quá trình đồng bộ hiện thị thông tin thêm -v

Ví dụ muốn đồng nhất sử dụng cả ba thiết lập trên

# rsync - anv dir1/ dir2

Rsync – Đồng bộ giữa 2 máy Linux

Nếu một máy remote linux(một server, vps nào đó của bạn) có địa chỉ IP, có cho phép bạn kết nối SSH bàng Private Key (Cách kết nối SSH bằng Private Key
kết nối SSH bằng Private Key).
Ví dụ, cho phép gõ lệnh sau để kết nối SSH

# Kết nối ssh bằng Private Key đến máy địa chỉ IP, bằng user root
# ssh [email protected]

Lúc này trên máy remote có thư mục /home/dir1 buốn đồng bộ xuống máy local ở đường dẫn /home/dir1_backup,
thì gõ lệnh sau:

# rsync -anv root @ IP : / home / dir1 / home / dir1_backup

Tương tự như vậy, nếu theo chiều ngược lại muốn thư mục ở local đồng nhất lên server ( remote ) thì thay thư mục nguồn là ở máy local, đích là máy remote

# rsync -anv / home / dir1_backup root @ IP : / home / dir1

Rsync – Đồng bộ giữa Linux – macOS

# macOS to Linux
rsync --partial -avz path_on_mac [email protected]:/path_on_linux

# Linux to macOS
rsync --partial -avz [email protected]:/path_on_linux path_on_mac

Rsync – Vài thiết lập bổ sung

  • -P hiện thị quá trình đồng bộ (Progress)
  • -z nén dữ liệu khi truyền tải
  • --exclude=thư-mục không đồng bộ thư mục nào đó
  • --no-g không đồng bộ thông tin chủ sở hữu (thiết lập giúp
    tránh lỗi có thể xảy ra giữa kiểu ổ đĩa không có thuộc tính tương ứng, ví dụ FAT)
  • --human-readable hiện thị thông tin dễ đọc
  • --delete xóa file/thư mực ở máy đích nếu ở nguồn không có

Ví dụ đồng bộ thư mục [email protected]:/home/dir1 về thư mục /home/backup của máy local, bên trong thư mục đó có thư mục /home/dir1/dir100
sẽ không đồng bộ, quá trình đồng bộ được hiện thị %

#

rsync -aP root @ IP : / home / dir1 / / home / backup -- exclude = / home / dir1 / dir100
rsync  --human-readable  --partial -avz /path/local remote:/path --delete

Rsync – Đồng bộ thư mục Windows/Linux

Rsync là công cụ cực kỳ hữu hiệu nếu bạn làm việc giữa các hệ thống Linux, nó không có trên Windows.
Nhưng tình huống có thể như sau:

Có một thư mục trên server Linux, /home/dir1, bạn muốn đồng bộ thư mục đó về máy Windows
lưu ở thư mục D:\backupdir1 hoặc ngược lại, thì làm điều đó như thế nào với Rsync. Có thể cài máy
ảo bằng Virtual Box sau đó cài một hệ điều hành Linux như CentOS, Ubuntu, rồi chia sẻ folder máy host Windows và máy ảo Linux, từ máy ảo Linux chạy lệnh Rsync đồng bộ vào thư mục chia sẻ này. Nếu làm cách này quá trình cài đặt mất vài tiếng, và khá phức tạp.

Cách đơn giản hơn là tạo môi trường chạy lệnh Linux bằng Docker

Sử dụng Docker chạy Ubuntu trên Windows

Nếu chưa có Docker, Vào trang Docker Destop, tải về và thiết lập nó trên Windows !

Sau khi có Docker ở Windows mở terminate (cmd nhưng khuyến khích dùng
PowerShell), chạy các lệnh đề tạo môi trường Linux như sau:

Tải về image Ubuntu (Phiên bản Mini Ubuntu cho Docker)

PS >docker pull ubuntu

Kiểm tra xem tên image ubuntu có trong hệ thống Docker chưa

PS >docker image ls

Chạy một bản ubuntu (tạo Container cụ thể), hệ điều hành này sẽ thiết cấu hình chia sẻ
thư mục Windows D:\backupdir1 (nhớ phải có thư mục này trên Windows) và gắn vào vị trí /home/backup1/

PS >docker run -it -v d:/backupdir1/:/home/backup1/ ubuntu

Sau lệnh trên, bạn đã tạo ra một container đang chạy hệ điều hành Ubuntu và đang vào tương tác với nó bằng dòng lệnh.
Lúc này từ Ubuntu mọi thay đổi trong thư mục /home/backup1 sẽ chính là thư mục d:/backupdir1/
của máy host Windows!

Vì Ubutun trên là cơ bản cho Docker, nên cần cài những thành phần theo nhu yếu thao tác

# Cập nhật
# apt-get update
# Cài SSH cho Ubuntu
# apt install openssh-server
# Cài rsync cho Ubuntu
# apt-get install rsync

Có SSH rồi, thông số kỹ thuật để truy vấn được đến Remote bằng SSH ( Xem SSH Private Key )

Giờ chỉa việc Rsync máy server remote với Ubuntu vào thư mục /home/backup1/

# rsync -aP [email protected]:/home/dir1/ /home/backup1

Và kết quả Rsync sẽ lưu chính trong thư mục máy host Windows, D:\backupdir1. Bạn cũng có thể
Resync từ local lên remote theo chiều ngược lại

ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB

Đăng ký nhận bài viết mới

Rate this post