Lệnh sync trong linux

Lệnh sync trong linux

  • Rsync là gì?
  • Các tính năng quan trọng của lệnh rsync
  • Cài đặt Rsync
      • Các Option
      • Với Centos
      • Với Ubuntu
      • Cú pháp thực hiện
      • VD:
      • 1. Sync a File on a Local Computer
      • 2. Rsync thư mục từ Local Server đến Server Remote
      • 3. Rsync thư mục từ xa với máy server local
      • 4. Rsync thông qua SSH
      • 5. Rsync file từ server local đến server remote qua SSH
      • 6. Rsync file và thư mục từ server remote đến server local với các option
      • 7. Rsync file và thư mục từ server local đến server remote với option –exclude
      • 8. Rsync file và thư mục từ server local đến server remote với option –delete
      • 9. Rsync file và thư mục từ server local đến server remote hiển thị progress
      • 10. Giớ hạn kích thước Rsync
      • 11. Tự động xoá nguồn sau khi Rsync hoàn tất
      • 12. Đặt giới hạn Bandwidth Limit và Transfer File
      • 13. Rsync với Dry

Rsync là gì?

Rsync ( Remote Sync) là một lệnh giúp khả năng truyền file gia tăng nhanh từ máy chủ này sang máy chủ khác. Trong bài viết này, mình sẽ hướng dẫn bạn sử dụng lệnh Rsync cho các trường hợp sử dụng khác nhau.

Rsync chỉ sao chép sự khác biệt của các tệp đã thực sự thay đổi, được nén thông qua ssh. Nó rất phổ biến và được sử dụng rộng rãi để di chuyển các tệp hoặc thư mục trên Linux/Unix với nhau.

Các tính năng quan trọng của lệnh rsync

  • Tốc độ: Rsync sao chép toàn bộ nội dung giữa các thư mục nguồn và đích. rsync chỉ blocks or bytes đã thay đổi đến vị trí đích, điều này làm cho việc chuyển rất nhanh.
  • Bảo mật: rsync cho phép mã hóa dữ liệu bằng giao thức ssh trong khi truyền.
  • Băng thông thấp: rsync sử dụng nén và giải nén khối dữ liệu theo từng khối ở đầu gửi và nhận tương ứng. Vì vậy, băng thông được sử dụng bởi rsync sẽ luôn ít hơn so với các giao thức truyền tệp khác như FTP.
  • Đặc quyền: Không yêu cầu đặc quyền đặc biệt để cài đặt và thực thi rsync.

Cài đặt 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.

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]  @:
# Copy file/folder từ 1 remote Server tới server hiện tại
rsync [-options] @: 

VD:

rsync -azvh /home/admin/admin_backups/admin.root.admin.tar.gz :/home/file_backup // Mặc định port 22
rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/ // Thêm vào vào

1. Sync a File on a Local Computer

Lệnh sau sẽ đồng bộ hóa một tệp trên một máy cục bộ từ vị trí này sang vị trí khác.

[root@localhost]# rsync -zvh test.txt /home/test1/
test.txt
sent 87.76M bytes received 31 bytes 35.11M bytes/sec
total size is 87.74M speedup is 1.00

Ở đây trong ví dụ này, một tệp thử nghiệm .txt cần được sao chép hoặc đồng bộ vào thư mục /home/test1/

Nếu thư mục đích không tồn tại thì rsync sẽ tự động tạo một thư mục cho đích.

2. Rsync thư mục từ Local Server đến Server Remote

Lệnh này cho phép bạn di chuyển một thư mục từ máy chủ này sang máy chủ khác

[root@localhost]$ rsync -avzh public_html/ :/home/
's password:
sending incremental file list
public_html/
public_html/cgi-bin
public_html/index.php
sent 72 bytes  received 30 bytes  140.80 bytes/sec
total size is 1M  speedup is 1.00

3. Rsync thư mục từ xa với máy server local

Lệnh này sẽ giúp bạn đồng bộ một thư mục từ xa đến một thư mục cục bộ. Ở đây trong ví dụ này, một thư mục /home/public_html trên máy chủ từ xa đang được sao chép trong server local của bạn trong /home/test.

[root@localhost]# rsync -avzh :/home/public_html /home/test/
's password:
receiving incremental file list
created directory /home/test
public_html/
public_html/cgi_bin
public_html/cgi_bin/index.php
sent 91 bytes  received 4.99M bytes  322.16K bytes/sec
total size is 4.99M  speedup is 1.00

4. Rsync thông qua SSH

Bằng cách sử dụng giao thức SSH, bạn có thể chuyển dữ liệu trong một kết nối được bảo mật bằng mã hóa. Bạn cần cung cấp mật khẩu root để kết nối, sử dụng tùy chọn SSH sẽ gửi thông tin đăng nhập của bạn theo cách được mã hóa để mật khẩu của bạn được an toàn.

rsync -avzh kblinux.zip -e 'ssh -p 2020' /home/

5. Rsync file từ server local đến server remote qua SSH

[root@localhost]# rsync -avzhe ssh public_html/ :/home
's password:
sending incremental file list
public_html/
sent 16.56M bytes  received 45 bytes  1.28M bytes/sec
total size is 2M  speedup is 1.10

6. Rsync file và thư mục từ server remote đến server local với các option

Trong ví dụ dưới đây, lệnh rsync sẽ chỉ bao gồm các tập tin .php và loại trừ mọi thứ trong thư mục đó.

[root@localhost]# rsync -avzeh ssh --include '*php' --exclude '*' :/home/public_html /root/public_html
receiving incremental files list
test.php
test1.php

7. Rsync file và thư mục từ server local đến server remote với option –exclude

Trong ví dụ dưới đây, lệnh rsync sẽ chỉ loại trừ các tệp .txt và bao gồm mọi thứ trong thư mục đó.

[root@localhost]# rsync -avze ssh --exclude '*txt' :/home/public_html /root/public_html
receiving incremental files list
test.html
test1.php

8. Rsync file và thư mục từ server local đến server remote với option –delete

Tùy chọn –delete được sử dụng khi bạn muốn đồng bộ hóa dữ liệu từ máy cục bộ và một số tệp không có sẵn trên nguồn nhưng có mặt tại đích. Tùy chọn –delete lần này sẽ giúp bạn xóa các tệp không sử dụng khỏi đích

[root@localhost]# rsync -avzP --delete :/home/test/public_html root/public_html
's password:
receiving incremental file list
deleting public_html/test/file1
deleting public_html/test/file2
deleting public_html/test/
public_html/
sent 28 bytes received 137 bytes 36.67 bytes/sec
total size is 2M speedup is 2.00

9. Rsync file và thư mục từ server local đến server remote hiển thị progress

Ví dụ dưới đây là đồng bộ tệp & thư mục từ máy chủ cục bộ sang máy chủ từ xa với tốc độ và thời gian truyền tệp.

[root@tecmint]# rsync -avzeh ssh --progress /home/pkgs :/root/pkgs
's password:
sending incremental file list
pkgs/
pkgs/httpd-2.2.3-82.el5.centos.i386.rpm
1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)
pkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
99.04K 100%  241.19kB/s        0:00:00 (xfer#2, to-check=2/5)
sent 4.99M bytes  received 92 bytes  475.56K bytes/sec
total size is 4.99M  speedup is 1.00

10. Giớ hạn kích thước Rsync

Bạn có thể chỉ định giới hạn kích thước tệp MAX trong khi đồng bộ hóa. Vì vậy, nó sẽ để lại lớn như các tập tin zip và tar. Nó có thể được thực hiện bằng cách thêm max-size = vào lệnh rsync.

Trong ví dụ này, nó sẽ đồng bộ các tệp 100k cũng ít hơn 100k tệp.

[root@localhost]# rsync -avze ssh --max-size = '100k' :/home/public_html /root/public_html

11. Tự động xoá nguồn sau khi Rsync hoàn tất

Lệnh này sẽ tự động xoá nguồn sau khi rsync hoàn tất với option ‘–remove-source-files‘

[root@localhost]# rsync --remove-source-files -zvh backup.tar /home/backups/
backup.tar
sent 14.71M bytes  received 31 bytes  4.20M bytes/sec
total size is 16.18M  speedup is 1.10
[root@localhost]# ll backup.tar
ls: backup.tar: No such file or directory

12. Đặt giới hạn Bandwidth Limit và Transfer File

Bạn có thể đặt giới hạn băng thông trong khi truyền dữ liệu từ máy chủ này sang máy chủ khác với sự trợ giúp của tùy chọn ‘  bwlimit’. Tùy chọn này giúp chúng tôi giới hạn băng thông I / O.

[root@localhost]# rsync --bwlimit=100 -avzhe ssh  /home/public_html :/root/public_html
's password:
sending incremental file list
sent 508 bytes  received 18 bytes  81.09 bytes/sec
total size is 43M  speedup is 145347.05

13. Rsync với Dry

Nếu bạn chưa quen với rsync và không biết chính xác đầu ra là gì nếu bạn chạy bất kỳ lệnh rsync nào, thì lệnh này chắc chắn sẽ giúp bạn kiểm tra đầu ra trước. Các lệnh rsync thực sự có thể làm rối tung mọi thứ trong thư mục đích của bạn.

Tùy chọn này sẽ không thực hiện bất kỳ thay đổi nào chỉ thực hiện một lệnh dry và hiển thị đầu ra của lệnh. Lệnh rsync này giúp bạn kiểm tra đầu ra trước khi bạn thực thi trong môi trường thực.

root@localhost]# rsync --dry-run --remove-source-files -zvh backup.tar /home/pu
backup.tar
sent 35 bytes  received 15 bytes  100.00 bytes/sec
total size is 16.18M  speedup is 323584.00 (DRY RUN)

Khi bạn chạy các lệnh rsync, nó có thể yêu cầu mật khẩu trong khi thực hiện rsync từ máy chủ cục bộ đến máy chủ từ xa. Nếu bạn muốn chạy rsync tự động mà không cần nhắc mật khẩu, bạn phải tạo và sử dụng xác thực dựa trên khóa SSH.