Thứ Sáu, 28 tháng 7, 2023

Cách sử dụng lệnh rsync trong Linux

Trong bài này mình sẽ hướng dẫn cài đặt và sử dụng lệnh rsyns trong Linux, đây là lệnh dùng để sao chép giữa liệu giữa các hệ thống, nói cách khác là nó dùng để đồng bộ dữ liệu giữa hai hệ thống.

rsync là một công cụ command line rất linh hoạt, nó giúp đồng bộ các file và thư mục giữa hai máy tính hoặc hai vị trí trên một máy tính một cách nhanh chóng thông qua một remote shell. Điểm đặc biệt là nó sẽ so sánh hai file giữa hai hệ thống và chỉ đồng bộ những điểm khác nhau giúp việc truyền tải nhanh hơn.

Mục lục

  • 1. Cài đặt Rsync package
  • 2. Cú pháp lệnh rsync trong Linux
  • 3. Cách sử dụng lệnh rsync trong Linux
  • 4. Sử dụng lệnh rsync trong Linux để truyền dữ liệu từ xa
  • 5. Loại trừ file và thư mục ra khỏi lệnh rsync trong Linux

1. Cài đặt Rsync package

Tiện ích rsync đã được cài đặt sẵn trên hầu hết các bản phân phối của Linux và macOS. Nếu trong máy của bạn không có thì hãy chạy lệnh sau để cài đặt từ kho lưu trữ:

Cài Rsync trên Ubuntu và Debian
1
sudo apt install rsync
Cài Rsync trên CentOS và Fedora
1
sudo yum install rsync

2. Cú pháp lệnh rsync trong Linux

Trước khi tìm hiểu cách sử dụng rsync command thì hãy xem qua cú pháp của nó trước nhé, nó sẽ có dạng như sau:

Bài viết này được đăng tại [tranvanbinh.vn]

1
2
3
Local to Local:  rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]

Trong đó:

  • OPTION là những tùy chọn, bạn có thể xem chi tiết hơn ở phần dưới.
  • SRC là thư mục nguồn.
  • DEST là thư mục đích.
  • USER là remote username.
  • HOST là remote host name hoặc địa chỉ IP

OPTIONS là những tùy chọn dùng để kiểm soát lệnh rsync, cụ thể như sau:

  • -a, --archive, chế độ lưu trữ, tương đương với -rlptgoD. Tùy chọn này yêu cầu rsync đồng bộ hóa các thư mục một cách đệ quy, transfer tất cả symbolic links, group, phân quyền.
  • -z, - compress. Tùy chọn này buộc rsync nén dữ liệu khi nó được gửi đến máy đích. Chỉ sử dụng tùy chọn này nếu đường truyền kết nối với máy từ xa không được tốt.
  • -P, --partial --progress. Khi tùy chọn này được sử dụng thì rsync sẽ hiển thị thanh tiến trình trong quá trình truyền dữ liệu. Nó rất hữu ích khi chuyển các tệp file qua kết nối mạng chậm hoặc không ổn định.
  • --delete. Khi tùy chọn này được sử dụng, rsync sẽ xóa các file không liên quan khỏi vị trí đích.
  • -q, --quiet. Sử dụng tùy chọn này nếu bạn muốn loại bỏ các thông báo không lỗi.
  • -e. Tùy chọn này cho phép bạn chọn một kiểu remote khác. Theo mặc định, rsync được định cấu hình để remote qua ssh.

3. Cách sử dụng lệnh rsync trong Linux

Cách sử dụng cơ bản nhất là copy một file tự vị trí này sang vị trí khác trong cung một mạng cục bộ.

1
rsync -a /opt/filename.zip /tmp/

Lưu ý rằng tài khoản đang đăng nhập phải có quyền đọc trên file nguồn và ghi trên file đích.

Nếu bạn muốn đặt một cái tên khác khi copy thì sử dụng cú pháp sau:

1
rsync -a /opt/filename.zip /tmp/newfilename.zip

Sức mạnh thực sự của rsync không phải là copy file như vậy, mà là sự đồng bộ dữ liệu giữa hai nơi.

Đoạn code dưới đây mình đã tạo một bản backup của website:

1
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Khi chạy lệnh này thì tất cả những file có trong thư mục public_html sẽ có trong thư mục public_html_backup.

Trường hợp thư mục không tồn tai thì lệnh rsync sẽ tự động tạo.

4. Sử dụng lệnh rsync trong Linux để truyền dữ liệu từ xa

Khi sử dụng rsync để truyền dữ liệu từ xa thì nó phải được cài đặt trên cả máy nguồn và máy đích. Các phiên bản mới của rsync sẽ sử dụng SSH để remote.

Trong ví dụ sau minh đang chuyển một thư mục từ một máy cục bộ sang một máy từ xa thông qua ssh.

1
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Nếu bạn chưa đặt đăng nhập SSH không cần mật khẩu cho máy từ xa thì bạn sẽ được yêu cầu nhập mật khẩu.

Nếu bạn muốn chuyển ngược lại dữ liệu từ máy cục bộ sang máy từ xa thì hãy hoán đổi vị trí của chúng.

1
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Nếu máy từ xa lắng nghê trên một port khác port 22 (port mặc định) thì hãy thiết lập cho nó bằng tùy chọn -e.

1
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Khi chuyển một lượng lớn dữ liệu thì bạn nên chạy lệnh rsync kết hợptùy chọn -P.

1
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

5. Loại trừ file và thư mục ra khỏi lệnh rsync trong Linux

Có một số trường hợp bạn không muốn đồng bộ một số file và thư mục thì hãy sử dụng tùy chọn --exclude. Và bạn phải sử dụng đường dẫn tương đối đến vị trí nguồn nhé.

Như trong ví dụ dưới đây sẽ loại trừ thư mục node_modules và tmp.

1
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

Cách thứ hai là sử dụng tùy chọn --exclude-from để chỉ định đến một file chứa danh sách các thư mục bị loại bỏ.

1
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/

Trong đó nội dung của file exclude-file.txt sẽ là:

1
2
node_modules
tmp

Như vậy là mình đã hướng dẫn xong cách sử dụng lệnh rsync trong Linux, đây là lệnh rất hữu ích dùng để sao lưu và đồng bộ dữ liệu giữa hai máy trên Linux.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master