Cách sao lưu tệp và thư mục trong Debian 12

Tác giả ChatGPT, T.Chín 13, 2024, 08:38:53 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Trong thế giới CNTT, điều quan trọng là phải giữ một bản sao dữ liệu của bạn càng nhiều càng tốt để sử dụng khi cần thiết trong trường hợp ổ đĩa bị hỏng hoặc bị xóa nhầm. Do đó, sao lưu thường xuyên vào cuối ngày là một thói quen tốt đối với người dùng máy tính có trách nhiệm.

Lệnh 'rsync' thường được sử dụng để sao chép dữ liệu lớn. Tuy nhiên, lệnh 'cp' cũng được sử dụng khi sao chép một số lượng nhỏ các thư mục và tệp trên máy cục bộ.


Trong bài viết này, chúng ta sẽ tìm hiểu cách sao lưu tệp và thư mục trong Debian 12.

1. Điều kiện tiên quyết

Tốt nhất bạn nên có những điều sau để hướng dẫn này có hiệu quả.

  • Hai máy Debian 12 có quyền root

2. Sao lưu thư mục bằng lệnh cp

Lệnh đầu tiên chúng ta sẽ thảo luận là 'cp'. Lệnh này được sử dụng để sao chép một số lượng nhỏ các tệp và thư mục trên máy cục bộ, vì vậy nó thực tế không được sử dụng trong ngành.

Cú pháp của lệnh 'cp' như sau.

Mã nguồn [Chọn]
cp -option1 -option2 source destination
Để giúp bạn hiểu rõ hơn, chúng tôi sẽ sao chép các tệp từ Desktop/log sang Karim/logrot. Chạy lệnh sau trên terminal.

Mã nguồn [Chọn]
cp -avr Desktop/log Karim/logro
  • a: Được sử dụng để bảo toàn các thuộc tính của thư mục như chế độ tệp, quyền sở hữu, dấu thời gian, v.v.
  • r: Được sử dụng để sao chép đệ quy các thư mục bên trong thư mục chính
  • v: Nó được sử dụng để mô tả chi tiết đầu ra

Sau đây là mẫu đầu ra.


Nếu bạn muốn sao chép tất cả các tệp, thư mục và thư mục con sang một thư mục khác, bạn có thể sử dụng ký tự đại diện *. Ví dụ, lệnh sau sẽ sao chép tất cả dữ liệu từ thư mục hiện có Desktop/log/ sang Karim/logro/.

Mã nguồn [Chọn]
cp -avr Desktop/log/* Karim/logro/
Sau đây là mẫu đầu ra.


3. Sao lưu thư mục với rysnc

Như chúng tôi đã nói, lệnh được sử dụng rộng rãi nhất để sao lưu tệp và thư mục là 'rsync'. Do đó, chúng ta hãy thảo luận về nó là gì và cách sử dụng nó.

3.1. Rysnc là gì?

Rsync là viết tắt của remote sync và được Andrew Tridgell và Paul Mackerras viết vào ngày 19 tháng 6 năm 1996. Đây là lệnh hiệu quả để đồng bộ hóa và chuyển tệp giữa các máy cục bộ và mạng. Nó có sẵn theo mặc định trên hầu hết các hệ thống. Tuy nhiên, bạn có thể cài đặt nó với sự trợ giúp của các lệnh đơn giản sau nếu nó không khả dụng (Chạy các lệnh với quyền root).

Mã nguồn [Chọn]
apt update

apt install rsync

Trước khi đồng bộ dữ liệu, bạn cũng cần cài đặt máy khách và máy chủ SSH trên cả hai máy mạng. Chạy các lệnh sau với quyền root trên cả hai máy Debian 1o.

Mã nguồn [Chọn]
apt-get install ssh
3.2. Sao lưu thư mục trên máy cục bộ

Cú pháp cơ bản khi đồng bộ hóa các tập tin trên máy cục bộ như sau.

Mã nguồn [Chọn]
rsync option source-directory destination-directory
Nếu bạn muốn giữ lại siêu dữ liệu như quyền sở hữu, quyền, ngày tạo, v.v. Bạn phải sử dụng tùy chọn -a. Nếu bạn muốn sao chép các thư mục bên trong thư mục theo cách đệ quy, bạn phải sử dụng tùy chọn -r.

Mã nguồn [Chọn]
rsync -ar sourcedirectory destinationdirectory
Tương tự, nếu bạn muốn xem tiến trình trong khi quá trình đồng bộ đang diễn ra, hãy sử dụng tùy chọn -v. Các lệnh sẽ như sau,

Mã nguồn [Chọn]
rsync -avr sourcedirectory destinationdirectory
Giả sử chúng ta muốn đồng bộ các tập tin và thư mục nằm tại Desktop/log với Karim/logro, lệnh sẽ như sau.

Mã nguồn [Chọn]
rsync -avr Desktop/log Karim/logro
Sau đây là mẫu đầu ra.


Hãy thảo luận thêm một ví dụ nữa và giả sử chúng ta có một thư mục data-1 nằm ở ổ cứng 1 (/media/hdd1/data-1) và bạn muốn đồng bộ nó với ổ cứng thứ hai tại /media/hdd2/. Lệnh đầy đủ sẽ trông như sau.

Mã nguồn [Chọn]
rsync -avr /media/hdd1/dữ liệu-1 /media/hdd2/
Khi được thực thi, lệnh sẽ tạo thư mục data-1 trên ổ cứng thứ hai và sao chép toàn bộ nội dung của thư mục này vào đường dẫn đích /media/hdd2/.

3.3. Sao lưu các tập tin và thư mục qua mạng

Cú pháp hơi khác khi truyền dữ liệu qua mạng. Khi bạn muốn đồng bộ thư mục cục bộ với thư mục từ xa, lệnh sẽ trông như sau.

Mã nguồn [Chọn]
rsync [-options] PathofSourceFolder username@IPAddressofRemoteHost:PathofDestinationFolder
Giả sử tôi có một thư mục kiểm tra nằm bên trong máy cục bộ của tôi tại /home/karim/testfolder và tôi muốn đồng bộ hóa nó tại /home/karim. Người dùng từ xa là 'karim' và địa chỉ IP của máy là 10.1.1.2. Chạy lệnh sau trên thiết bị đầu cuối.

Mã nguồn [Chọn]
rsync -avr /home/karim/testfolder [email protected]:/home/karim/
Ngay khi bạn thực hiện lệnh này, bạn sẽ được yêu cầu nhập mật khẩu của máy từ xa.

Dưới đây là mẫu đầu ra sau khi đồng bộ hóa thư mục.


Khi bạn muốn đồng bộ một thư mục từ xa với một thư mục cục bộ, lệnh sẽ như sau.

Mã nguồn [Chọn]
rsync [-options] username@IPAddressofRemoteHost:PathofSourceFolder PathofDestinationFolder
Giả sử chúng ta có một thư mục từ xa 'testfolder' nằm tại /home/karim/ và tôi muốn đồng bộ với máy cục bộ tại vị trí /home/karim/. Địa chỉ IP của máy từ xa là 10.1.1.2 và tên người dùng là karim.

Thực hiện lệnh sau trên thiết bị đầu cuối.

Mã nguồn [Chọn]
rsync -avr  [email protected]:/home/karim/ /home/karim/testfolder
Dưới đây là mẫu đầu ra.


3.4. Làm thế nào để tự động sao lưu

Việc tự động sao lưu sẽ thuận tiện hơn để các kỹ sư hệ thống không cần phải lo lắng về việc thực hiện thủ công các lệnh và sao lưu hàng ngày.

Có một công cụ nổi tiếng có tên là 'crontab' trong Linux, tự động hóa quá trình sao lưu. Chúng ta có thể lên lịch chạy tất cả các lệnh trên hàng ngày, hàng tuần hoặc hàng tháng. Nếu bạn chưa cài đặt crontab trên bản phân phối Linux của mình, hãy chạy các lệnh sau trên terminal với quyền sudo.

Mã nguồn [Chọn]
apt update

apt install cron

Sau khi cài đặt crontab, hãy chạy lệnh sau trên terminal để mở trình soạn thảo crontab.

Mã nguồn [Chọn]
crontab -e
Mẫu đầu ra sẽ như sau.


Crontab có năm trường sau: m h dm m dw

  • m: chỉ định phút (0-59)
  • h: chỉ định giờ (0-23)
  • dm: chỉ định ngày trong tháng (1-31)
  • m: chỉ định tháng (1-12)
  • dw: chỉ định ngày trong tuần (0-6 trong đó 0 là Chủ Nhật)

Hãy lấy ví dụ trước về việc đồng bộ hóa một thư mục từ đĩa này sang đĩa khác và giả sử chúng ta muốn thực hiện việc này vào lúc 12 giờ trưa hàng ngày, thì công việc cron sẽ như sau.

Mã nguồn [Chọn]
0 0 * * * rsync -avr /media/hdd1/data-1 /media/hdd2/
Giả sử bạn muốn sao lưu vào Chủ Nhật hàng tháng lúc 12 giờ trưa, công việc cron phải được viết như sau.

Mã nguồn [Chọn]
0 0 1 * * rsync -avr /media/hdd1/data-1 /media/hdd2/
Bạn đã đọc cách chúng ta có thể sao lưu bằng lệnh cực kỳ mạnh mẽ 'rysnc'. Chúng tôi đã kết thúc bài viết bằng 'crontab'. 'rsync' và 'crontab' cũng là một sự kết hợp hữu ích.