Lưu trữ thẻ: #Linux

Hướng dẫn copy dữ liệu với lệnh rsync thông qua kết nối SSH

I. Rsync

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

  • Rsync nhanh hơn SCP vì Rsync sử dụng giao thức remote-update, chỉ transfer những dữ liệu thay đổi mà thôi.
  • Rsync tiết kiệm băng thông do sử dụng phương pháp nén và giải nén khi transfer.

II. Cài đặt và sử dụng Rsync

  1. Cài đặt Rsync:

    SSH vào server linux và tiến hành cài đặt bằng lệnh sau.

    • Trên RedHat/CentOS
      # yum install rsync -y
      # systemctl start rsyncd
      # systemctl enable rsyncd
    • Trên Debian/Ubuntu
      #apt-get install rsync -y


  2. Sử dụng RSYNC để copy dữ liệu thông qua kết nối SSH
    • Mô hình:
      • Source Host: Máy chủ gửi dữ liệu
      • Destination Host: Máy chủ nhận dữ liệu
    • Cú pháp chung:
      rsync -option source_file username@destination_host:/destination_folder
    • Chú thích:
      • 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ố tùy chọn quan trọng trong rsync:
      • -v: hiển thị trạng thái kết quả
      • -r: copy toàn bộ dữ liệu, nhưng không giữ thông tin quyền, sở hữu của file và thư mục.
      • -a: copy toàn bộ dữ liệu, đồng thời giữ nguyên được tất cả các thông tin về quyền, sở hữu, liên kết,.. 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: hiển thị kết quả đồng bộ dữ liệu một cách 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ế:

      Ở ví dụ này, chúng ta sẽ tiến hành chép dữ liệu wordpress từ thư mục /home/doamins/vannhieu.com ở server 103.27.238.62  đến thư mục /home/domains/vannhieu123.com trên server 103.27.238.61, các bước thực hiện như sau:

      • Đảm bảo rsync đã được cài đặt trên cả 2 server.
      • SSh vào server 103.27.238.62 và thực hiên lệnh:
        rsync -P -avz /home/domains/vannhieu.com/*  103.27.238.61:/home/domains/vannhieu123.com/

        Trong đó:

        • sync: 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/domains/vannhieu.com/* : Thư mục Nguồn, đồng bộ toàn bộ các file và thư mục trong thư mục vannhieu.com (Dấu * có nghĩa là tất cả)
        • 103.27.238.61: Máy Đích, máy mà đồng bộ file đến
        • /home/domains/vannhieu123.com/: Thư mục máy đích, các file sẽ được lưu tại đây.
      • Nhập thông tin password của server để bắt đầu copy dữ liệu
      • Sau khi copy dữ liệu xong

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cách copy dữ liệu với lệnh RSYNC thông qua kết nối SSH. Chúc Quý khách thành công!

Hướng dẫn sử dụng lệnh curl để download file

I. Cài đặt CURL trên Linux

  • Để cài đặt curl trên Debian / Ubuntu và các dẫn xuất, hãy nhập như sau
    # sudo apt install curl
  • Để cài đặt curl trên RHEL, CentOS, Fedora và các dẫn xuất, hãy nhập như sau:
    # sudo yum install curl
  • Để cài đặt curl trên OpenSUSE và các dẫn xuất, hãy nhập như sau:
    # sudo zipper install curl

II. Cách sử dụng

  • Cú pháp chung của lệnh Curl trong Linux như sau:
    # curl [options] [URL...]
  • Trong đó:
    • Tham số URL là bắt buộc.
    • Tham số OPTIONS thì có thể có hoặc không.
      URL là đường dẫn trỏ đến thư viện / mã nguồn trên internet, thường là đường dẫn các website.
  • Ví dụ: Lấy thông tin mã nguồn của website longvan.net
    # curl longvan.net
    Lệnh sẽ trả kết quả về là nội dung mã HTML của website. Nếu bạn không chỉ rõ sử dụng phương thức HTTP hay HTTPS thì nó sẽ lấy giá trị mặc định là HTTP.

III. Download file với lệnh CURL

Để tải xuống một tệp với curl, sử dụng tùy chọn -o hoặc -O, theo sau là URL vào tệp.

  • Tùy chọn chữ thường -o cho phép bạn chỉ định tên của tệp đã lưu. Ví dụ sau, file lưu lại sẽ có tên là linux.tar.xz
    # curl -o linux.tar.xz https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.xz
  • Với tuỳ chọn chữ Hoa là -O lưu tệp với tên tệp gốc của nó. Ví dụ sau sẽ lưu file với tên là linux-5.5.3.tar.xz
    # curl -O https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.xz

Ngoài ra:

  • Với curl, bạn cũng có thể tải xuống các tệp từ máy chủ FTP được bảo vệ bằng mật khẩu, Ví dụ:
    #curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
  • Khi được sử dụng với tùy chọn -I curl sẽ hiển thị các tiêu đề HTTP của một URL đã cho

Như vậy, Long Vân đã hướng dẫn Quý khách cách sử dụng công cụ CURL để download file. Chúc quý khách thành công !

Sử dụng phần mềm PuTTY để truy cập SSH vào server

  1. Hướng dẫn cài đăt

    • Truy cập vào trang chủ hoặc trực tiếp đường dẫn dưới đây để tải phiên bản PuTTy mới nhất
      https://www.chiark.greenend.org.uk/~sgtatham/putty/
    • Chọn phiên bản tương tích
    • Sau khi tải về tiếp tục install như một ứng dụng thông thường.
  2. Sử dụng Putty để SSH tới server

    • Bước 1: Mở PuTTY SSH client.
    • Bước 2: Nhập thông tin Host Name và Port (hình dưới), và nhấn Open để thực hiện kết nối.
    • Bước 3: Nhập thông tin truy cập với:
      Dòng login as:  là nơi bạn nhập SSH username, và nhấn Enter.
      Tiếp theo là nhập thông tin mật khẩu và nhấn Enter để login vào server.

      Lưu ý:

      • Màn hình Putty sẽ không hiển thị bất bì ký tự gì khi nhập password, bạn chỉ cần nhập đúng password và nhấn Enter.
      • Trong trường hợp copy và paste password, bạn chỉ cần rê chuột vào màn hình chính của PuTTY và nhấn right-click, sau đó nhấn Enter.

Như vậy, Long Vân đã hướng dẫn Quý khách sử dụng PuTTY để kết nối SSH đến server linux. Chúc Quý khách thành công !

Hướng dẫn cài đặt cấu hình UFW trên Ubuntu

I. Hướng dẫn cài đăt:

Thông thường ufw sẽ được cài đặt mặc định trên hệ điều hành Ubuntu. Thực hiện lệnh sau để kiểm tra:

# ufw version

Trong một số trường hợp, nếu chưa có ufw, Quý khách có thể thực hiện theo các thao tác dưới đây.

  1. Bước 1: Truy cập đến server và cập nhật hệ thống và kiểm tra cài đặt
    # sudo apt update
    # sudo apt upgrade
  2. Bước 2: Cài đặt ufw
    • Chạy lệnh cài đăt ufw
      # sudo apt-get install ufw
      

  3. Bước 3: Kiểm tra hoạt động
    • Nếu kết quả kiểm tra ok thì quá trình cài đặt ufw đã hoàn thành.

II. Hướng dẫn kích hoạt UFW trên server:

  • Kích hoạt UFW sau khi cài đặt
    # sudo ufw enable
  • Kiểm tra khi kích hoạt UFW
    # sudo ufw status
  • Khôi phục firewall UFW về cấu hình mặc định
    # sudo ufw reset

III. Hướng dẫn cấu hình UFW:

  1. Cấu hình rule mặc định:
    • Sử dụng lệnh sudo ufw status verbose để kiểm tra cấu hình firewall mặc định. Bao gồm:
      • Chặn toàn bộ kết nối đến : deny (incoming)
      • Cho phép truy cập ra bên ngoài : allow (outgoing)
      • Chặn cấu hình routed: disable (routed)
    • Để điều chỉnh cấu hình cấu hình mặc định, thực hiện lệnh sau:
      # sudo ufw default [policy] [chain]

      Ví dụ: để cho phép truy cập từ bên ngoài

      # sudo ufw default allow incoming
  2. Cho phép các port cần truy cập vào server
    • Mặc định firewall ufw sẽ chặn toàn bộ kết nối đến server.
    • Để thực hiện mở một port (cổng) bất kỳ bạn có thể thực hiện cú pháp lệnh như sau:
      # sudo ufw allow [port]/[protocol]

      Ví dụ : mở các port 80, 443, 3306 và 8080

  3. Chặn truy cập đến một port.
    • Các port không được allow sẽ tự động chặn kết nối từ bên ngoài.
    • Ngoài ra, để chặn một port cụ thể có thể sử dụng cú pháp với tùy chọn deny như sau:
      # sudo ufw deny [port]/[protocol]

      Ví dụ : mình sẽ đóng port 80, 443

  4. Ngoài ra ufw cho phép thực hiện lệnh allow và deny với loại service cụ thể. Ví dụ: sử dụng mysql thay vì mởi port 3306, sử dụng http hay https thay vì các port 80, 443, cụ thể:

    # sudo ufw deny mysql
    # sudo ufw allow http
    # sudo ufw allow https

  5. Cho phép môt IP hoặc một range IP truy cập đến server.
    • Cho phép một truy cập
      # sudo ufw allow from $Your_IP

      Ví dụ:  cho phép, mở IP 172.20.1.125 trên ufw như sau.

      # sudo ufw allow from 172.20.1.125

    • Chặn truy cập từ một IP
      sudo ufw deny from $Your_IP

      Ví dụ:  chặn truy cập từ IP 172.20.1.126 như sau.

      sudo ufw deny from 172.20.1.126

  6. Cho phép IP kèm port nhất định vào server

    • Lệnh cho phép một IP hoặc một range IP truy cập đến một Port cụ thể trên server:
    • Cú pháp:
      sudo ufw allow from [ip/range-ip] to any port [port-number]
    • Ví dụ: câu lệnh cho phép IP 192.168.72.1 truy cập đến port 22 và 3306
      sudo ufw allow from 192.168.72.1 to any port 22
      sudo ufw allow from 192.168.72.1 to any port 3306

  7. Xóa bỏ rule firewall cấu hình trước đó.
    • Kiểm tra các rule hiện có với số định danh. Lệnh:
      sudo ufw status numbered

    • Xác định chính xác rule muốn xóa với số định danh tương ứng
    • Thực hiện lệnh xóa rule với lệnh:
      sudo ufw delele [number]

      Ví dụ: thực hiện xóa rule cho phép truy cập đến port SSH (22) với lệnh

      sudo ufw delete 7

  8. Bật hoặc tắt ipv6 trên firewal UFW

    • Trong trường hợp server sử dụng IPv6, cần đảm bảo rằng IPv6 được bật trong UFW. 
    • Mở file cấu hình UFW ở /etc/default/ufw và tiến hành điều chỉnh.

      Nếu dòng IPV6=no bạn hãy chuyển sang YES để kích hoạt và ngược lại nếu muốn tắt thì chọn no.

    • Sau cùng sử dụng lệnh sau để reload lại cấu hình
      # sudo ufw reload

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cách cài đặt và cấu hình firewall UFW, chúc Quý khách thành công !

Hướng dẫn cài đặt OpenVPN trên Ubuntu 20.04

I. OpenVPN là gì?

OpenVPN được biết tới là chương trình mã nguồn mở VPN hoàn toàn miễn phí. OpenVPN cũng được xem là giải pháp tốt nhất cho những người muốn có 1 kết nối an toàn và bảo mật giữa 2 hệ thống mạng với nhau.

Với OpenVPN cho phép các kết nối point to point an toàn trong các cấu hình được định tuyến hoặc bắc cầu và các phương tiện truy cập từ xa. Nó sử dụng giao thức bảo mật tùy chỉnh dựa trên SSL/TLS để thiết lập kết nối được mã hóa trên Internet.

II. Cài đặt OpenVPN

Yêu cầu:

  • Máy chủ Linux (Ở bài viết này mình sẽ cài đặt tren Ubuntu bản 20.04)
  • IP Public

Các bước thực hiện:

  1. Bước 1: Cập nhật hệ thống
    Chạy lệnh update để cập nhật mới hệ thống.
    root@root:~# sudo apt update

    Tiếp theo chạy lênh upgrade để cập nhật phiên bản mới nhất

    root@root:~# sudo apt upgrade
  2. Bước 2: Tải và cài đặt OpenVPN từ Script
    Đảm bảo server đã có sẳn wget, hoặc Quý khách có thể cài đặt bằng lệnh sau.
    root@root:~# apt install wget

    Tiến hành tải file cài file cài đặt.

    root@root:~# wget https://git.io/vpn -O openvpn-ubuntu-install.sh

  3. Bước 3: Tiến hành cài đặt
    • Cấp quyền run cho file cài đặt vừa download về
      root@root:~# chmod +x openvpn-ubuntu-install.sh
    • Thực hiện cài đặt với lệnh
      root@root:~# bash openvpn-ubuntu-install.sh
    • Nhập các tùy chọn theo hướng dẫn
  4. Quá trình cài đặt hoàn thành.

III. Quản lý User trong Open VPN server

  1. Tạo thêm User
    • Để tạo thêm User VPN, tiếp tục chạy lệnh
      root@root:~# bash openvpn-ubuntu-install.sh
    • Trong giao diện quản lý Open VPN, chọn tùy chọn 1) Add a new client.
    • Sau đó nhập tên của User cần tạo
    • Chờ quá trình tạo user hoàn thành.
  2. Trong giao diện quản lý Open VPN ở trên cũng có thể thực hiện việc xóa những user không còn sử dụng.

III. Cài đặt VPN Client

  1. Bước 1: Download và cài đặt ứng dụng VPN Client từ https://openvpn.net/downloads/openvpn-connect-v3-windows.msi 
  2. Bước 2: Download file OVPN, có thể thực hiện bằng hai cách:
    1. Cách 1: Sử dụng WinSCP hoặc một ứng dụng SSH có hỗ trợ download file, để download file OVPN trong folder /root/
    2. Cách 2: mở truy cập và download thông qua giao diện web.
      Lưu ý: việc mở truy cập để download file OVPN thông qua giao diện web sẽ không an toàn. Do đó, cần thiết phải giới hạn truy cập (cho phép 1 IP truy cập vào port 8000) trên firewall trước khi tiến hành.
      • Thực hiện cho phép truy cập trên firewall đối với port 8000
        root@root:~# sudo ufw allow from [IP_address] to any port 8000  

        Với [IP_address] là IP bạn đang sử dụng.

      • Bật HTTP với Open VPN bằng lệnh
        root@root:~#  cd /root && python3 -m http.server
      • Lúc này ta sẽ truy cập web bằng server-ip:8000 và tải về máy file OVPN.
  3. Bước 3: Di chuyển file OVPN vào bên trong folder C:Program FilesOpenVPN Connect trên máy client.
  4. Bước 4: Import file config bằng cách chọn File > Browse, chọn file .opvn vừa rồi, sau đó nhấn Open

  5. Bước 5: Trong cửa sổ làm việc, nhấn nhấn CONNECT để kết nối VPN.

Như vậy, Long Vân đã hoàn thành hướng dẫn cài đặt và cấu hình Open VPN trên server Ubuntu 22.04. Chúc Quý khách thành công!

 

Triển khai server Docker dễ dàng với CasaOS

I. CasaOS là gì?

CasaOS là một phần mềm mã nguồn mở được xây dựng trên hệ sinh thái docker. Nó có thể đơn giản hóa quá trình triển khai và quản lý ứng dụng container.

CasaOS được phát hành bởi IceWhale Technology vào năm 2021. CasaOS nhằm mục đích xác định lại trải nghiệm kỹ thuật số đám mây riêng cho người dùng và nhà phát triển thông qua dân chủ hóa dữ liệu và cho phép mọi người đưa mục tiêu đó lên một quy mô mới.

II. Các tính năng của CasaOS

  • Quản lý tất các tệp trong FILES.
  • Chia sẻ file qua mạng.
  • Dễ dàng cài đặt và quản lý nhiều các docker container.
  • Tự do thêm ổ đĩa và không gian mở rộng.
  • Bảo vệ dữ liệu riêng tư của bạn

III. Triển khai CasaOS

  1. Truy cập SSH vào server và chạy lệnh sau:
    curl -fsSL https://get.casaos.io | sudo bash
  2. Quá trình cài đặt hoàn toàn tự động. Sau khi hoàn thành, truy cập và đường dẫn http://[ip-address]  và tạo user đăng nhập.
  3. Giao diện của CasaOS khi truy cập thành công.
  4. Đến đây, Quý khách đã có thể sử dụng các chức năng trên CasaOS cũng như cài đặt thêm các ứng dụng từ App Store sẳn có.

IV. Cài đặt Nextcloud trên CasaOS

  1. Trong giao diện làm việc của CasaOS, truy cập App Store và tìm ứng dụng Nextcloud, nhấn install để cài đặt.
  2. Sau khi hoàn thành việc cài đặt, biểu tượng Nextcloud sẽ hiển thị trong phần Apps.
  3. Chọn vào biểu tượng Nextcloud để truy cập ứng dụng.

Quý khách có thể tham khảo thêm tài liệu về ứng dụng tại:

  • https://casaos.io/
  • https://wiki.casaos.io/

Như vậy, Long Vân đã hoàn thành giới thiệu cho Quý khách về ứng dụng CasaOS. Hy vọng bài viết sẽ hữu ích đối với hệ thống của Quý khách. Chúc Quý khách thành công.

Hướng dẫn sử dụng WinSCP để upload dữ liệu lên trên server Linux

Để sử dụng được tiện ích WinSCP, Quý khách cần thực hiện các bước như sau:

  1. Bước 1: Download Winscp về máy tính tại đường dẫn http://winscp.net/eng/download.php
  2. Bước 2: Cài đặt như một ứng dụng thông thường.
  3. Bước 3: Mở tiện ích và thực hiện:
    • Nập thông tin kết nối đến server Linux như hình bên dưới:
    • Trong đó:
      • Số thứ tự 1: giao thức truy cập (ở đây chúng ta chọn giao thức SFTP)
      • Số thứ tự 2, 3, 4, 5: thông tin truy cập tương ứng của server
    • Nhấn login để truy cập.
  4. Bước 4: chuyển dữ liệu
    • Sau khi login, WinSCP sẽ hiển thị cửa sổ bao gồm dữ liệu trên server linux (bên phải) và dữ liệu trên máy tính (bên trái).
    • Quý khách có thể download hoặc upload dữ liệu trên server linux bằng thao tác kéo thả.

Như vậy, Long Vân đã hoàn thành hướng dẫn sử dụng WinSCP để upload dữ liệu lên trên server Linux. Chúc Quý khách thành công!

Hướng dẫn cài đặt sử dụng Fail2ban để ngăn chặn Brute Force

Fail2ban là một công cụ mạnh mẽ để bảo vệ máy chủ của bạn khỏi tấn công Brute Force và các cuộc tấn công trực tuyến khác bằng cách tự động chặn các địa chỉ IP cố gắng đăng nhập sai quá nhiều lần vào hệ thống của bạn.
Dưới đây là hướng dẫn cơ bản về cách cài đặt và sử dụng Fail2ban trên một máy chủ Linux.

  1. Bước 1: Cài đặt Fail2ban
    Đầu tiên, chúng ta cần cài đặt Fail2ban trên máy chủ của mình. Sử dụng lệnh sau trên hệ thống Ubuntu hoặc CentOS:

    • Trên Ubuntu:
      sudo apt-get update
      sudo apt-get install fail2ban
    • Trên CentOS:
      sudo yum install epel-release
      sudo yum install fail2ban
  2. Bước 2: Cấu hình Fail2ban
    • Cấu hình Fail2ban tùy thuộc vào ứng dụng bạn muốn bảo vệ. Mỗi ứng dụng có một cấu hình riêng trong các tệp cấu hình của Fail2ban, thường được đặt trong thư mục /etc/fail2ban/jail.d/
    • File cấu hình thường có dạng *.conf. Bạn có thể tạo một tệp cấu hình riêng cho ứng dụng mục tiêu của bạn hoặc chỉnh sửa tệp /etc/fail2ban/jail.d/defaults-debian.conf để sử dụng các cài đặt mặc định.
    • Để cấu hình fail2ban để bảo vệ kết nối SSH, tạo file cấu hình:
      vi /etc/fail2ban/jail.d/myapp.conf
      Với nội dung như sau:

      [ssh]
      enabled = true
      port = ssh
      filter = sshd
      logpath = /var/log/auth.log
      maxretry = 3
      bantime = 3600

      Trong đó:

      • enabled : Đặt thành true để kích hoạt cấu hình.
      • port : Cổng mà bạn muốn theo dõi (vd: SSH port là ssh).
      • filter : Loại bộ lọc sử dụng (vd: ssh cho SSH).
      • logpath : Đường dẫn đến tệp nhật ký.
      • maxretry : Số lần thử đăng nhập sai trước khi IP bị chặn.
      • bantime : Thời gian ban IP sau khi vượt quá maxretry lần.
  3. Bước 3: Khởi động và kiểm tra Fail2ban
    • Khởi động Fail2ban và cho phép nó tự động chạy khi hệ thống khởi động:
      sudo systemctl start fail2ban
      sudo systemctl enable fail2ban
    • Sử dụng lệnh sau để kiểm tra trạng thái Fail2ban và xem danh sách các IP bị chặn:
      sudo fail2ban-client status
  4. Bước 4: Tùy chỉnh và theo dõi
    Bạn có thể tùy chỉnh nhiều cài đặt khác nhau trong tệp cấu hình và theo dõi Fail2ban để đảm bảo nó hoạt động đúng cách.

Đó là cách sử dụng Fail2ban để bảo vệ máy chủ của bạn khỏi tấn công Brute Force. Chúc bạn thành công!

Hướng dẫn sử dụng Rsync – command đồng bộ dữ liệu trên linux

I. Lệnh Rsync 

Rsync (Remote Sync) là lệnh được sử dụng phổ biến để sao chép và đồng bộ hóa các tệp, thư mục từ xa cũng như cục bộ trong các hệ thống Linux/Unix.
Với sự trợ giúp của lệnh rsync, có thể sao chép và đồng bộ dữ liệu từ xa và nội bộ trên các thư mục, ổ đĩa và mạng, thực hiện sao lưu dữ liệu và nhân bản giữa hai máy chủ Linux.

Cú pháp lệnh Rsync

rsync [options] source destination 

các tùy chọn dùng với lệnh rsync
-v verbose output, hiển thị thông tin chi tiết về quá trình xử lí chuyển dữ liệu.

-r sao chép dữ liệu theo cách đệ quy, không lưu giữ dấu thời gian và quyền trong khi chuyển dữ liệu.

-a chế độ lưu trữ, sao chép tệp đệ quy và duy trì các liên kết tượng trưng, quyền truy cập tệp, quyền sở hữu của người dùng và nhóm cũng như dấu thời gian.

-z nén tệp trong khi chuyển để giảm mức sử dụng mạng.

-h người dùng có thể đọc, in ra số ở định dạng người có thể đọc được

-P hiển thị tiến độ trong quá trình chuyển

SOURCE chỉ định (các) tệp hoặc thư mục nguồn sẽ được chuyển, có thể là vị trí cục bộ hoặc vị trí từ xa.

DESTINATION chỉ định đường dẫn đích nơi các tệp hoặc thư mục sẽ được sao chép. Tương tư như Source, nó có thể là đường dẫn cục bộ

II. Cài đặt Rsync trên Linux

Chúng ta có thể cài đặt rsync với trình cài đặt mặc định theo của từng hệ điều hành.

$ sudo apt install rsync         [trên Debian, UbuntuMint ]
$ sudo yum install rsync         [trên RHEL/CentOS/FedoraRocky/AlmaLinux]
$ sudo emerge -a sys-apps/rsync  [trên Gentoo Linux]
$ sudo apk add rsync             [trên Alpine Linux]
$ sudo pacman -S rsync           [trên Arch Linux]
$ sudo zypper install rsync      [trên OpenSUSE]

III. Một số trường hợp sử dụng lệnh Rsync

1. Sao chép/đồng bộ tệp cục bộ

Để sao chép hoặc đồng bộ hóa tệp cục bộ, bạn có thể dùng lệnh sau để đồng bộ hóa tệp trên máy cục bộ từ vị trí này sang vị trí khác.

Ví dụ tên tệp source-backup.tar cần sao chép hoặc đồng bộ vào thư mục /tmp/backups.

[root@longvan]# rsync -zvh source-backup.tar.gz /tmp/backups/

created directory /tmp/backups
backup.tar.gz

sent 448.54K bytes  received 70 bytes  889.21K bytes/sec
total size is 448.40K  speedup is 1.00

Như ví vụ trên, có thể thấy rằng này nếu thư mục đến chưa tồn tại thì rsync tự động tạo một thư mục.

2. Sao chép/đồng bộ thư mục cục bộ

Lệnh bên dưới sẽ chuyển hoặc đồng bộ tất cả tệp từ thư mục này sang thư mục khác trong cùng một máy chủ.

Trong ví dụ này, /root/rpmpkgs chứa các tệp rpm package và ở đây sẽ thư mục này được sao chép vào bên trong thư mục /tmp/backups/.

[root@longvan]# rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 3.47M bytes  received 96 bytes  2.32M bytes/sec
total size is 3.74M  speedup is 1.08

3. Sao chép thư mục từ máy chủ cục bộ sang máy chủ từ xa

Để sao chép một thư mục từ máy chủ cục bộ sang máy chủ từ xa, bạn có thể dùng lệnh sau để đồng bộ hóa thư mục từ máy cục bộ sang máy từ xa.

Ví dụ: nếu có một thư mục trong máy tính cục bộ của bạn “rpmpkgs” chứa các RPM packages và bạn muốn nội dung của thư mục cục bộ đó gửi đến máy chủ từ xa, bạn có thể dùng lệnh sau.

# rsync -avzh /root/rpmpkgs root@192.168.1.123:/root/

The authenticity of host '192.168.1.123 (192.168.1.123)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.123' (ED25519) to the list of known hosts.
root@192.168.1.123's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 3.74M bytes  received 96 bytes  439.88K bytes/sec
total size is 3.74M  speedup is 1.00

4. Sao chép thư mục từ xa sang máy chủ cục bộ

Lệnh này sẽ giúp bạn đồng bộ thư mục từ xa với thư mục cục bộ. Ở đây thư mục /root/rpmpkgs trên máy chủ từ xa đang được sao chép vào máy tính cục bộ của bạn trong /tmp/myrpms.

# rsync -avzh root@192.168.1.123:/root/rpmpkgs /tmp/myrpms

root@192.168.1.123's password: 
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 104 bytes  received 3.49M bytes  997.68K bytes/sec
total size is 3.74M  speedup is 1.07

5. Rsync qua SSH

Với rsync, có thể sử dụng SSH (Secure Shell) để truyền dữ liệu, sử dụng giao thức SSH trong khi truyền dữ liệu, có thể đảm bảo rằng dữ liệu của mình đang được truyền trong một kết nối bảo mật bằng mã hóa để không ai có thể đọc dữ liệu của bạn trong khi nó đang được truyền qua WAN.

Ngoài ra khi sử dụng rsync, cần cung cấp mật khẩu người dùng root để hoàn thành tác vụ cụ thể, vì vậy việc 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 khyẩu của bạn được an toàn.

Để sử dụng rsync qua SSH, có thể sử dụng tùy chọn -e để chỉ định lệnh shell từ xa, thường là ssh như bên dưới

rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination

6. Sao chép tệp từ máy chủ từ xa sang cục bộ bằng SSH

Để đồng bộ hóa tệp từ máy chủ từ xa đến máy chủ cục bộ, bạn có thể chỉ định giao thức với rsync bằng tùy chọn -e với tên giao thức bạn muốn sử dụng.

Ở đây sẽ sử dụng ssh với tùy chọn -e và thực hiện truyền dữ liệu.

# rsync -avzhe ssh root@192.168.1.123:/root/anaconda-ks.cfg /tmp

root@192.168.0.141's password: 
receiving incremental file list
anaconda-ks.cfg

sent 43 bytes  received 1.10K bytes  325.43 bytes/sec
total size is 1.90K  speedup is 1.67

7. Sao chép tệp từ máy chủ cục bộ sang máy chủ từ xa bằng SSH

Để đồng bộ hóa tệp từ máy chủ cục bộ với máy chủ từ xa bằng SSH, bạn có thể tận dụng lệnh sau như bên dưới.

# rsync -avzhe ssh backup.tar.gz root@192.168.0.141:/backups/

root@192.168.1.123's password: 
sending incremental file list
created directory /backups
backup.tar.gz

sent 224.59K bytes  received 66 bytes  64.19K bytes/sec
total size is 224.40K  speedup is 1.00

8. Hiển thị tiến trình trong khi truyền dữ liệu bằng Rsync

Để hiển thị tiến trình trong khi truyền dữ liệu từ máy này sang máy khác, sử dụng tùy chọn –progress, tùy chọn này sẽ hiển thị các tệp và thời gian còn lại để hoàn tất quá trình truyền.

# rsync -avzhe ssh --progress /root/rpmpkgs root@192.168.0.141:/root/rpmpkgs

root@192.168.1.123's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
          1.47M 100%   31.80MB/s    0:00:00 (xfr#1, to-chk=3/5)
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
        138.01K 100%    2.69MB/s    0:00:00 (xfr#2, to-chk=2/5)
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
          2.01M 100%   18.45MB/s    0:00:00 (xfr#3, to-chk=1/5)
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
        120.48K 100%    1.04MB/s    0:00:00 (xfr#4, to-chk=0/5)

sent 3.74M bytes  received 96 bytes  1.50M bytes/sec
total size is 3.74M  speedup is 1.00

9. Gồm các tệp có phần mở rộng đặc biệt với rsync

Để ấn định các tệp hoặc mẫu cụ thể trong quá trình hoạt động rsync, sử dụng tùy chọn –include với tiện ích mở rộng phù hợp với tất cả các tệp.

# rsync -avz --include='*.txt' /path/to/source/ user@remote:/path/to/destination/

Rsync sẽ chỉ bao gồm các tệp có phần đuôi .txt từ thư mục /path/to/source/ trong quá trình truyền

10. Loại trừ các tệp có phần mở rộng cụ thể bằng rsync

Tương tự để loại trừ một tiện ích mở rộng cụ thể trong quá trình hoạt động rsync, sử dụng tùy chọn –exclude với mẫu ký tự đại diện cần loại bỏ.

# rsync -avz --exclude='*.ext' /path/to/source/ user@remote:/path/to/destination/

Rsync sẽ loại trừ các tệp có phần mở rộng được chỉ định (*.ext) trong quá trình truyền, đồng thời bao gồm tất cả các tệp và thư mục khác.

11. Bao gồm và loại trừ các tệp bằng rsync

Để bao gồm và loại trừ các tệp hoặc mẫu cụ thể trong quá trình hoạt động rsync,
có thể sử dụng cả hai tùy chọn –include–exclude với các mẫu ký tự đại diện thích hợp.

Hai tùy chọn này cho phép chúng ta bao gồm và loại trừ các tệp bằng cách chỉ định các tham số. Tùy chọn này giúp chúng tôi chỉ định các tệp hoặc thư mục mà bạn muốn đưa vào đồng bộ hóa và loại trừ các tệp, thư mục không muốn chuyển.

lệnh rsync sẽ chỉ bao gồm các tệp và thư mục bắt đầu bằng R và loại trừ tất cả các tệp và thư mục khác.

# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.1.123:/var/lib/rpm/ /root/rpm

12. Sử dụng -delete với rsync

Nếu tệp hoặc một thư mục không tồn tại ở nguồn nhưng đã tồn tại ở đích, bạn có thể muốn xóa tệp/thư mục hiện có đó ở đích để đồng bộ hóa.

Chúng ta có thể sử dụng tùy chọn –delete để xóa các tệp không có trong thư mục nguồn.

Nguồn và đích được đồng bộ hóa. và hãy tạo một tệp test.txt để kiểm chứng

[root@longvan:~]# cd /root/rpm/
[root@longvan:~/rpm]# touch test.txt
[root@longvan:~/rpm]# rsync -avz --delete root@192.168.1.132:/var/lib/rpm/ /root/rpm/

root@192.168.1.132's password: 
receiving incremental file list
deleting test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Packages
Providename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.001
__db.002
__db.003

sent 445 bytes  received 18,543,954 bytes  2,472,586.53 bytes/sec
total size is 71,151,616  speedup is 3.84

13. Đặt giới hạn truyền tệp bằng Rsync

Bạn có thể chỉ định kích thước tệp tối đa sẽ được chuyển hoặc đồng bộ hóa.
Có thể làm điều đó với tùy chọn –max-size. Ở đây kích thước tệp tối đa là 200k, nên lệnh này sẽ chỉ chuyển những tệp bằng hoặc nhỏ hơn 200k.

# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.1.123:/root/tmprpm

root@192.168.1.123's password: 
sending incremental file list
created directory /root/tmprpm
./
.dbenv.lock
.rpm.lock
Conflictname
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requirename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.002

sent 129.52K bytes  received 396 bytes  28.87K bytes/sec
total size is 71.15M  speedup is 547.66

14. Tự động xóa tập tin nguồn sau khi chuyển

Trường hợp nếu bạn có một máy chủ web chính và máy chủ sao lưu dữ liệu, bạn đã tạo bản sao lưu hàng ngày và động bộ hóa với máy chủ dữ phòng của mình, nhưng bây giờ bạn không muốn giữ bản sao lưu cục bộ đó trong máy chủ web của mình.

Vì vậy, bạn sẽ đợi quá trình chuyển hoàn tất rồi xóa tệp sao lưu cục bộ đó theo cách thủ công không? Dĩ nhiên là không. Việc xóa tự động này có thể được thực hiện bằng các sử dụng tùy chọn –remove-source-files

# rsync --remove-source-files -zvh backup.tar.gz root@192.168.1.123:/tmp/backups/

root@192.168.1.123's password: 
backup.tar.gz

sent 795 bytes  received 2.33K bytes  894.29 bytes/sec
total size is 267.30K  speedup is 85.40

[root@longvan:~]# ls -l backup.tar.gz

ls: cannot access 'backup.tar.gz': No such file or directory

15. Chạy thử với Rsync

Nếu bạn mới sử dụng rsync và không biết chính xác lệnh hoạt động ra sao. Rsync thực sự có thể làm xáo trộn mọi thứ trong thư mục đích của bạn và sau đó làm hỏng mọi thứ.

Việc sử dụng tùy chọn này sẽ không thực hiện bất ký thay đổi nào với các tệp và hiển thị đầu ra của lệnh, nếu đầu ra hiển thị chính xác như bạn muốn thì bạn có thể xóa tùy chọn –dry-run khỏi lệnh của mình và chạy trên thiết bị đầu cuối.

# rsync --dry-run --remove-source-files -zvh backup.tar.gz root@192.168.1.123:/tmp/backups/

root@192.168.1.123's password: 
backup.tar.gz

sent 50 bytes  received 19 bytes  19.71 bytes/sec
total size is 267.30K  speedup is 3,873.97 (DRY RUN)

16. Đặt giới hạn băng thông và truyền tệp trong lệnh rsync

Bạn có thể đặt giới hạn băng thông trong khi truyền dữ liệu từ máy này sang máy 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 ta giới hạn băng thông I/O.

# rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.1.123:/root/tmprpm/
root@192.168.1.123's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

Ngoài ra, theo mặc định rsync chỉ đồng bộ hóa các khối và byte đã thay đổi, nếu bạn muốn đồng bộ hóa toàn bộ tệp một các rõ ràng thì bạn sử dụng tùy chọn -W với nó.

# rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10

Sử dụng CSF để lọc IP quốc tế (CSF Allow/Deny theo Country)

  1. Bước 1: Cài đặt tường lửa và kiểm tra hoạt động
    • Việc đầu tiên, bạn cần cài đặt CSF vào server (bạn có thể làm theo hướng dẫn Hướng cài đặt và cấu hình CSF – Long Vân (longvan.net))
    • Sau khi cài đặt xong CSF bạn stop và disable firewalld để tránh xung đột với CSF, sau đó bạn kiểm tra status CSF đã active chưa:

  2. Bước 2: Kiểm tra kết nối từ quốc tế.
    Trong bài hướng dẫn này, Long vân sẽ sử dụng sử dụng ứng dụng https://check-host.net/  để kiểm tra ping từ nhiều nguồn.
  3. Bước 3: Cấu hình CSF để chặn kết nối quốc tế:
    • Mở file cấu hình CSF với lệnh
      vi /etc/csf/csf.conf
    • Sử dụng lệnh :set nu để hiển thị thứ tự dòng.
    • Ở dòng 993 CC_DENY, bạn cấu hình chặn theo mã quốc gia (bạn tham khảo https://countrycode.org/ lấy mã code 2 chữ số nhé). Để làm như vậy nhập country code vào danh sách được phân tách bởi dấu phẩy. Ở đây mình DENY các khu vực China, Australia, Jappan, Ukraine, Russia.
    • Tìm dòng 1149 LF_SELECT = “0” đặt giá trị thành “1” để bật chức năng lọc địa chỉ IP
    • Dòng 830 LF_GLOBAL = “0” đặt giá trị thành “1” để áp dụng các quy tắc lọc địa chỉ IP cho tất cả địa chỉ IP
    • Ngoài ra, bạn chỉnh giá trị ở dòng LF_IPSET để sử dụng ipsec nếu có hỗ trợ.
    •  Ở dòng 11 bạn chỉnh TESTING = “0”, save và khởi động lại CSF bằng 2 command sau
      chkconfig --level 235 csf on
      
      service csf restart
  4. Bước 4: Kiểm tra lại kết nối
    • Như ở bước 1, bạn kiểm tra ping các khu vực bạn đã conf trước đó
    • Đây là kết quả sau khi DENY của mình

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cách cài đặt và cấu hình firewall CSF, chúc Quý khách thành công !