Quản trị viên Linux - Sao lưu và phục hồi
Trước khi khám phá các phương pháp dành riêng cho CentOS để triển khai kế hoạch sao lưu tiêu chuẩn, trước tiên chúng ta hãy thảo luận về những cân nhắc điển hình đối với chính sách sao lưu mức tiêu chuẩn. Điều đầu tiên chúng tôi muốn làm quen là3-2-1 backup rule.
Chiến lược dự phòng 3-2-1
Trong toàn ngành, bạn sẽ thường nghe thấy thuật ngữ mô hình dự phòng 3-2-1. Đây là một cách tiếp cận rất tốt để sống khi thực hiện một kế hoạch dự phòng. 3-2-1 được định nghĩa như sau:3bản sao dữ liệu; ví dụ, chúng tôi có thể có bản sao làm việc; một bản sao được đưa vào máy chủ CentOS được thiết kế để dự phòng bằng cách sử dụng rsync; và các bản sao lưu USB ngoại vi được tạo từ dữ liệu trên máy chủ sao lưu.2các phương tiện sao lưu khác nhau. Chúng tôi thực sự sẽ có ba phương tiện sao lưu khác nhau trong trường hợp này: bản sao làm việc trên SSD của máy tính xách tay hoặc máy trạm, dữ liệu máy chủ CentOS trên Mảng RADI6 và các bản sao lưu ngoại vi được đặt trên ổ USB.1sao chép dữ liệu ngoại vi; chúng tôi đang xoay các ổ USB ngoại vi hàng đêm. Một cách tiếp cận hiện đại khác có thể là nhà cung cấp sao lưu đám mây.
Khôi phục hệ thống
Một kim loại trần khôi phục kế hoạch chỉ đơn giản là một kế hoạch đặt ra bởi một quản trị viên CentOS để có được hệ thống quan trọng trực tuyến với tất cả các dữ liệu còn nguyên vẹn. Giả sử 100% hệ thống bị lỗi và mất tất cả phần cứng hệ thống trong quá khứ, quản trị viên phải có kế hoạch đạt được thời gian hoạt động với dữ liệu người dùng nguyên vẹn với chi phí thời gian chết tối thiểu. Nhân nguyên khối được sử dụng trong Linux thực sự làm cho việc khôi phục kim loại trần bằng hình ảnh hệ thống dễ dàng hơn nhiều so với Windows. Trường hợp Windows sử dụng kiến trúc vi nhân.
Khôi phục toàn bộ dữ liệu và khôi phục kim loại trần thường được thực hiện thông qua sự kết hợp của các phương pháp bao gồm làm việc, hình ảnh đĩa sản xuất được định cấu hình của các máy chủ hoạt động chính, sao lưu dự phòng dữ liệu người dùng tuân theo quy tắc 3-2-1. Thậm chí một số tệp nhạy cảm có thể được lưu trữ trong két an toàn, chống cháy với quyền truy cập hạn chế vào nhân viên đáng tin cậy của công ty.
Một kế hoạch khôi phục dữ liệu và khôi phục kim loại trần nhiều giai đoạn sử dụng các công cụ CentOS gốc có thể bao gồm:
đ để tạo và khôi phục hình ảnh đĩa sản xuất của các máy chủ được cấu hình
rsync để sao lưu gia tăng tất cả dữ liệu người dùng
tar & gzip để lưu trữ các bản sao lưu tệp được mã hóa với mật khẩu và ghi chú từ quản trị viên. Thông thường, điều này có thể được đặt trên ổ USB, được mã hóa và khóa trong két sắt mà Quản lý cấp cao truy cập. Ngoài ra, điều này đảm bảo người khác sẽ biết thông tin xác thực bảo mật quan trọng nếu quản trị viên hiện tại thắng xổ số và biến mất đến một hòn đảo đầy nắng ở đâu đó.
Nếu hệ thống bị treo do lỗi phần cứng hoặc thảm họa, sau đây sẽ là các giai đoạn khôi phục hoạt động khác nhau:
Xây dựng một máy chủ hoạt động với một hình ảnh kim loại trần được định cấu hình
Khôi phục dữ liệu về máy chủ đang hoạt động từ các bản sao lưu
Có quyền truy cập vật lý vào thông tin đăng nhập cần thiết để thực hiện hai thao tác đầu tiên
Sử dụng rsync để sao lưu cấp tệp
rsync là một tiện ích tuyệt vời để đồng bộ hóa các thư mục của tệp cục bộ hoặc với một máy chủ khác. rsync đã được các Quản trị viên Hệ thống sử dụng trong nhiều năm, do đó nó rất được cải tiến cho mục đích sao lưu dữ liệu. Theo ý kiến của tác giả, một trong những tính năng tốt nhất của đồng bộ là khả năng được viết kịch bản từ dòng lệnh.
Trong hướng dẫn này, chúng ta sẽ thảo luận về rsync theo nhiều cách khác nhau -
- Khám phá và nói về một số tùy chọn phổ biến
- Tạo bản sao lưu cục bộ
- Tạo bản sao lưu từ xa qua SSH
- Khôi phục các bản sao lưu cục bộ
rsyncđược đặt tên cho mục đích của nó: Đồng bộ hóa từ xa và vừa mạnh mẽ vừa linh hoạt trong việc sử dụng.
Sau đây là một bản sao lưu từ xa rsync cơ bản qua ssh -
MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'s password:
sending incremental file list
6,148 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
33,144 100% 31.61MB/s 0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
892,406 100% 25.03MB/s 0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
77 100% 2.21kB/s 0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
43,188,224 1% 4.26MB/s 0:08:29
sent 2,318,683,608 bytes received 446 bytes 7,302,941.90 bytes/sec
total size is 2,327,091,863 speedup is 1.00
MiNi:~ rdc$
Đồng bộ hóa sau đã gửi gần 2,3GB dữ liệu qua mạng LAN của chúng tôi. Vẻ đẹp của rsync là nó hoạt động tăng dần ở cấp khối trên cơ sở từng tệp. Điều này có nghĩa là, nếu chúng tôi chỉ thay đổi hai ký tự trong tệp văn bản 1MB, thì chỉ một hoặc hai khối sẽ được chuyển qua lan trong lần đồng bộ tiếp theo!
Hơn nữa, chức năng gia tăng có thể bị vô hiệu hóa để có thêm băng thông mạng được sử dụng để sử dụng CPU ít hơn. Điều này có thể được khuyến khích nếu liên tục sao chép nhiều tệp cơ sở dữ liệu 10MB cứ sau 10 phút trên một Backup-Lan chuyên dụng 1Gb. Lý do là: những điều này sẽ luôn thay đổi và sẽ truyền tăng dần sau mỗi 10 phút và có thể đánh thuế tải của CPU từ xa. Vì tổng tải chuyển giao sẽ không vượt quá 5 phút, chúng tôi có thể chỉ muốn đồng bộ hóa toàn bộ các tệp cơ sở dữ liệu.
Sau đây là các công tắc phổ biến nhất với rsync :
rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path
Công tắc điện | Hoạt động |
---|---|
-a | Chế độ lưu trữ và giả sử -r, -p, -t, -g, -l |
-d | Chỉ đồng bộ cây thư mục, không có tệp |
-r | Đệ quy vào thư mục |
-l | Sao chép các liên kết tượng trưng dưới dạng liên kết biểu tượng |
-p | Duy trì quyền |
-g | Bảo tồn nhóm |
-v | Báo cáo dài dòng |
-z | Nén qua liên kết mạng |
-X | Bảo tồn các thuộc tính mở rộng |
-A | Bảo tồn ACL |
-t | Bảo tồn dấu thời gian |
-W | Chuyển toàn bộ tệp, không phải khối tăng dần |
-u | Không ghi đè lên tệp đích |
--phát triển | Hiển thị tiến trình chuyển |
--xóa bỏ | Xóa các tệp cũ hơn trên mục tiêu |
--max-size = XXX | Kích thước tệp tối đa để đồng bộ hóa |
Khi nào sử dụng rsync
Sở thích cá nhân của tôi đối với rsync là khi sao lưu các tệp từ máy chủ nguồn sang máy chủ đích. Ví dụ: tất cả các thư mục gia đình để khôi phục dữ liệu hoặc thậm chí ngoại vi và vào đám mây để khôi phục thảm họa.
Sao lưu cục bộ với rsync
Chúng ta đã biết cách chuyển tệp từ máy chủ này sang máy chủ khác. Phương pháp tương tự có thể được sử dụng để đồng bộ hóa thư mục và tệp cục bộ.
Hãy tạo một bản sao lưu gia tăng thủ công của / etc / trong thư mục của người dùng gốc của chúng ta.
Đầu tiên, chúng ta cần tạo một thư mục tắt ~ / root cho bản sao lưu đã đồng bộ hóa -
[root@localhost rdc]# mkdir /root/etc_baks
Sau đó, đảm bảo có đủ dung lượng đĩa trống.
[root@localhost rdc]# du -h --summarize /etc/
49M /etc/
[root@localhost rdc]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 43G 15G 28G 35% /
Chúng tôi rất tốt cho việc đồng bộ hóa toàn bộ thư mục / etc / -
rsync -aAvr /etc/ /root/etc_baks/
Thư mục / etc / đã đồng bộ hóa của chúng tôi -
[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x. 3 root root 101 Feb 1 19:40 abrt
-rw-r--r--. 1 root root 16 Feb 1 19:51 adjtime
-rw-r--r--. 1 root root 1518 Jun 7 2013 aliases
-rw-r--r--. 1 root root 12288 Feb 27 19:06 aliases.db
drwxr-xr-x. 2 root root 51 Feb 1 19:41 alsa
drwxr-xr-x. 2 root root 4096 Feb 27 17:11 alternatives
-rw-------. 1 root root 541 Mar 31 2016 anacrontab
-rw-r--r--. 1 root root 55 Nov 4 12:29 asound.conf
-rw-r--r--. 1 root root 1 Nov 5 14:16 at.deny
drwxr-xr-x. 2 root root 32 Feb 1 19:40 at-spi2
--{ condensed output }--
Bây giờ chúng ta hãy thực hiện một rsync gia tăng -
[root@localhost etc_baks]# rsync -aAvr --progress /etc/ /root/etc_baks/
sending incremental file list
test_incremental.txt
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1145/1282)
sent 204620 bytes received 2321 bytes 413882.00 bytes/sec
total size is 80245040 speedup is 387.77
[root@localhost etc_baks]#
Chỉ tệp test_incremental.txt của chúng tôi được sao chép.
Sao lưu vi sai từ xa với rsync
Hãy thực hiện sao lưu đầy đủ rsync ban đầu của chúng tôi vào một máy chủ có triển khai kế hoạch sao lưu. Ví dụ này thực sự là sao lưu một thư mục trên Máy trạm Mac OS X vào máy chủ CentOS. Một khía cạnh tuyệt vời khác của rsync là nó có thể được sử dụng trên bất kỳ nền tảng nào mà rsync đã được chuyển sang.
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes received 336 bytes 9,720,257.27 bytes/sec
total size is 2,326,636,892 speedup is 1.00
MiNi:~ rdc$
Bây giờ chúng tôi đã sao lưu một thư mục từ một máy trạm vào một máy chủ chạy ổ đĩa RAID6 với phương tiện khôi phục thảm họa xoay được lưu trữ bên ngoài. Sử dụng rsync đã cung cấp cho chúng tôi bản sao lưu tiêu chuẩn 3-2-1 với chỉ một máy chủ có mảng đĩa dự phòng đắt tiền và các bản sao lưu vi sai xoay vòng.
Bây giờ chúng ta hãy thực hiện một bản sao lưu khác của cùng một thư mục bằng rsync sau khi một tệp mới có tên test_file.txt đã được thêm vào.
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
test_file.txt
sent 814 bytes received 61 bytes 134.62 bytes/sec
total size is 2,326,636,910 speedup is 2,659,013.61
MiNi:~ rdc$
Như bạn có thể thấy, chỉ có tệp mới được gửi đến máy chủ qua rsync . So sánh khác biệt được thực hiện trên cơ sở từng tệp.
Một số điều cần lưu ý là: Điều này chỉ sao chép tệp mới: test_file.txt, vì nó là tệp duy nhất có các thay đổi. rsync sử dụng ssh. Chúng tôi không bao giờ cần sử dụng tài khoản gốc của mình trên cả hai máy.
Đơn giản, mạnh mẽ và hiệu quả, rsync rất tuyệt vời để sao lưu toàn bộ thư mục và cấu trúc thư mục. Tuy nhiên, bản thân rsync không tự động hóa quá trình. Đây là nơi chúng ta cần tìm hiểu hộp công cụ của mình và tìm công cụ tốt nhất, nhỏ gọn và đơn giản cho công việc.
Để tự động sao lưu rsync với cronjobs , điều cần thiết là người dùng SSH phải được thiết lập bằng cách sử dụng khóa SSH để xác thực. Điều này kết hợp với cronjobs cho phép rsync được thực hiện tự động trong các khoảng thời gian được định trước.
Sử dụng DD cho hình ảnh khôi phục kim loại trần từng khối
DD là một tiện ích Linux đã có từ buổi bình minh của hạt nhân Linux gặp gỡ GNU Utilities.
dd trong các thuật ngữ đơn giản nhất sao chép hình ảnh của một vùng đĩa đã chọn. Sau đó, cung cấp khả năng sao chép các khối được chọn của đĩa vật lý. Vì vậy, trừ khi bạn có bản sao lưu, khi dd ghi qua đĩa, tất cả các khối sẽ được thay thế. Mất dữ liệu trước đó vượt quá khả năng khôi phục đối với phục hồi dữ liệu cấp chuyên nghiệp thậm chí có giá cao.
Toàn bộ quá trình tạo hình ảnh hệ thống có thể khởi động với dd như sau:
- Khởi động từ máy chủ CentOS với bản phân phối linux có thể khởi động
- Tìm ký hiệu của đĩa khởi động được chụp ảnh
- Quyết định vị trí nơi hình ảnh khôi phục sẽ được lưu trữ
- Tìm kích thước khối được sử dụng trên đĩa của bạn
- Bắt đầu hoạt động hình ảnh dd
Trong hướng dẫn này, vì mục đích đơn giản và thời gian, chúng tôi sẽ tạo một ảnh ISO của bản ghi khởi động chính từ máy ảo CentOS. Sau đó chúng tôi sẽ lưu trữ hình ảnh này bên ngoài trang web. Trong trường hợp MBR của chúng tôi bị hỏng và cần được khôi phục, quy trình tương tự có thể được áp dụng cho toàn bộ đĩa hoặc phân vùng có khả năng khởi động. Tuy nhiên, thời gian và dung lượng ổ đĩa cần thiết thực sự hơi quá mức cho hướng dẫn này.
Quản trị viên CentOS nên thành thạo trong việc khôi phục đĩa / phân vùng có thể khởi động hoàn toàn trong môi trường thử nghiệm và thực hiện khôi phục kim loại trần. Điều này sẽ giảm bớt rất nhiều áp lực khi cuối cùng người ta cần phải hoàn thành thực hành trong một tình huống thực tế với Người quản lý và vài chục người dùng cuối đang tính thời gian chết. Trong trường hợp như vậy, 10 phút để tìm ra mọi thứ có vẻ như là vĩnh cửu và khiến người ta phải đổ mồ hôi.
Note- Khi sử dụng dd, hãy đảm bảo KHÔNG nhầm lẫn giữa nguồn và khối lượng đích. Bạn có thể hủy dữ liệu và các máy chủ có khả năng khởi động bằng cách sao chép vị trí sao lưu của mình vào ổ đĩa khởi động. Hoặc tệ hơn có thể phá hủy dữ liệu mãi mãi bằng cách sao chép dữ liệu ở mức rất thấp với DD.
Sau đây là các công tắc và tham số dòng lệnh phổ biến cho dd -
Công tắc điện | Hoạt động |
---|---|
nếu = | Trong tệp hoặc nguồn được sao chép |
của = | Tệp ngoài hoặc bản sao của tệp trong |
bs | Đặt cả kích thước khối đầu vào và đầu ra |
che khuất | Đặt kích thước khối tệp đầu ra |
IBS | Đặt kích thước khối tệp đầu vào |
đếm | Đặt số khối để sao chép |
chuyển đổi | Các tùy chọn bổ sung để thêm cho hình ảnh |
Noerror | Không ngừng xử lý lỗi |
đồng bộ hóa | Chèn các khối đầu vào không phù hợp trong trường hợp có lỗi hoặc lệch |
Note on block size- Kích thước khối mặc định cho dd là 512 byte. Đây là kích thước khối tiêu chuẩn của ổ đĩa cứng mật độ thấp hơn. Các ổ cứng HDD có mật độ cao hơn ngày nay đã tăng lên kích thước khối 4096 byte (4kB) để cho phép các ổ đĩa từ 1TB trở lên. Vì vậy, chúng ta sẽ muốn kiểm tra kích thước khối đĩa trước khi sử dụng dd với các đĩa cứng mới hơn, dung lượng cao hơn.
Đối với hướng dẫn này, thay vì làm việc trên máy chủ sản xuất với dd , chúng tôi sẽ sử dụng cài đặt CentOS chạy trong VMWare. Chúng tôi cũng sẽ định cấu hình VMWare để khởi động hình ảnh ISO ISO có thể khởi động thay vì làm việc với Thanh USB có thể khởi động.
Đầu tiên, chúng ta sẽ cần tải xuống ảnh CentOS có tên: CentOS Gnome ISO . Đây là gần 3GB và bạn nên luôn giữ một bản sao để tạo ổ USB có thể khởi động và khởi động vào cài đặt máy chủ ảo để xử lý sự cố và hình ảnh kim loại trần.
Các bản phân phối Linux có khả năng khởi động khác cũng sẽ hoạt động. Linux Mint có thể được sử dụng cho các ISO có thể khởi động vì nó có hỗ trợ phần cứng tuyệt vời và các công cụ đĩa GUI được đánh bóng để bảo trì.
CentOS GNOME Live boot image có thể được tải xuống từ: http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso
Hãy cấu hình cài đặt VMWare Workstation của chúng tôi để khởi động từ hình ảnh có thể khởi động Linux của chúng tôi. Các bước dành cho VMWare trên OS X. Tuy nhiên, chúng tương tự nhau trên VMWare Workstation trên Linux, Windows và thậm chí Virtual Box.
Note- Sử dụng giải pháp máy tính để bàn ảo như Virtual Box hoặc VMWare Workstation là một cách tuyệt vời để thiết lập các kịch bản phòng thí nghiệm để học các tác vụ Quản trị CentOS. Nó cung cấp khả năng cài đặt một số bản cài đặt CentOS, thực tế không có cấu hình phần cứng cho phép người dùng tập trung vào việc quản trị và thậm chí lưu trạng thái máy chủ trước khi thực hiện thay đổi.
Đầu tiên, hãy cấu hình một cd-rom ảo và đính kèm ảnh ISO của chúng tôi để khởi động thay vì cài đặt máy chủ CentOS ảo -
Bây giờ, hãy đặt đĩa khởi động -
Bây giờ khi khởi động, máy ảo của chúng tôi sẽ khởi động từ ảnh ISO khởi động CentOS và cho phép truy cập vào các tệp trên máy chủ Virtual CentOS đã được định cấu hình trước đó.
Hãy kiểm tra đĩa của chúng tôi để xem chúng tôi muốn sao chép MBR từ đâu (đầu ra cô đọng như sau).
MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Chúng tôi đã định vị cả hai đĩa vật lý của chúng tôi: sda và sdb . Mỗi có kích thước khối là 512 byte. Vì vậy, bây giờ chúng ta sẽ chạy lệnh dd để sao chép 512 byte đầu tiên cho MBR của chúng ta trên SDA1.
Cách tốt nhất để làm điều này là -
[root@mint rdc]# dd if=/dev/sda bs=512 count=1 | gzip -c >
/mnt/sdb/images/mbr.iso.gz
1+0 records in
1+0 records out
512 bytes copied, 0.000171388 s, 3.0 MB/s
[root@mint rdc]# ls /mnt/sdb/
mbr-iso.gz
[root@mint rdc]#
Chỉ như vậy, chúng ta có đầy đủ hình ảnh của bản ghi khởi động chính. Nếu chúng ta có đủ chỗ để hình ảnh ổ đĩa khởi động, chúng ta có thể dễ dàng tạo một hình ảnh khởi động toàn hệ thống -
dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz
Các conv = đồng bộ được sử dụng khi byte phải phù hợp với một môi trường vật lý. Trong trường hợp này, dd có thể gặp lỗi nếu không đọc được các căn chỉnh 4K chính xác (giả sử ... một tệp chỉ có 3K nhưng cần chiếm tối thiểu một khối 4K duy nhất trên đĩa. Hoặc, chỉ có một lỗi đọc và tập tin không thể được đọc bởi dd.). Do đó, dd với chuyển đổi = đồng bộ hóa, noerror sẽ chèn 3K với dữ liệu nhỏ, nhưng hữu ích vào phương tiện vật lý trong căn chỉnh khối 4K. Trong khi không trình bày một lỗi có thể kết thúc một hoạt động lớn.
Khi làm việc với dữ liệu từ đĩa, chúng tôi luôn muốn bao gồm tham số : chuyển đổi = sync, noerror .
Điều này đơn giản là vì các đĩa không phải là luồng như dữ liệu TCP. Chúng được tạo thành từ các khối được sắp xếp theo một kích thước nhất định. Ví dụ: nếu chúng ta có khối 512 byte, một tệp chỉ 300 byte vẫn cần đủ 512 byte dung lượng đĩa (có thể là 2 khối cho thông tin inode như quyền và thông tin hệ thống tệp khác).
Sử dụng gzip và tar để lưu trữ an toàn
gzip và tar là hai tiện ích mà quản trị viên CentOS phải quen với việc sử dụng. Chúng được sử dụng cho nhiều mục đích khác ngoài việc giải nén các kho lưu trữ.
Sử dụng Gnu Tar trong CentOS Linux
Tar là một tiện ích lưu trữ tương tự như winrar trên Windows. Tên của nó Tape Archive được viết tắt là tar tóm tắt khá nhiều về tiện ích. tar sẽ lấy các tập tin và đặt chúng vào một kho lưu trữ để thuận tiện về mặt logic. Do đó, thay vì hàng tá tệp được lưu trữ trong / etc. chúng tôi chỉ có thể "chuyển hóa" chúng vào một kho lưu trữ để thuận tiện cho việc sao lưu và lưu trữ.
tar đã là tiêu chuẩn để lưu trữ các tệp lưu trữ trên Unix và Linux trong nhiều năm. Do đó, sử dụng tar cùng với gzip hoặc bzip được coi là cách tốt nhất cho các kho lưu trữ trên mỗi hệ thống.
Sau đây là danh sách các công tắc và tùy chọn dòng lệnh phổ biến được sử dụng với tar:
Công tắc điện | Hoạt động |
---|---|
-c | Tạo một kho lưu trữ .tar mới |
-C | Trích xuất đến một thư mục khác |
-j | Sử dụng nén bzip2 |
-z | Sử dụng nén gzip |
-v | Tiến trình lưu trữ hiển thị chi tiết |
-t | Liệt kê nội dung lưu trữ |
-f | Tên tệp của kho lưu trữ |
-x | Trích xuất kho lưu trữ tar |
Sau đây là cú pháp cơ bản để tạo một kho lưu trữ tar .
tar -cvf [tar archive name]
Note on Compression mechanisms with tar- Nên tuân theo một trong hai lược đồ nén phổ biến khi sử dụng tar: gzip và bzip2. tệp gzip tiêu tốn ít tài nguyên CPU hơn nhưng thường có kích thước lớn hơn. Trong khi bzip2 sẽ mất nhiều thời gian hơn để nén, chúng sử dụng nhiều tài nguyên CPU hơn; nhưng sẽ dẫn đến kích thước tệp cuối nhỏ hơn.
Khi sử dụng tính năng nén tệp, chúng ta sẽ luôn muốn sử dụng các phần mở rộng tệp tiêu chuẩn cho phép mọi người bao gồm cả chính chúng ta biết (so với việc đoán bằng cách thử và sai) sơ đồ nén nào là cần thiết để giải nén các tệp lưu trữ.
bzip2 | .tbz |
bzip2 | .tar.tbz |
bzip2 | .tb2 |
gzip | .tar.gz |
gzip | .tgz |
Khi cần giải nén các tệp lưu trữ trên hộp Windows hoặc để sử dụng trên Windows, bạn nên sử dụng .tar.tbz hoặc .tar.gz vì hầu hết các phần mở rộng đơn ba ký tự sẽ gây nhầm lẫn cho Windows và chỉ Quản trị viên Windows (tuy nhiên, đó là đôi khi là kết quả mong muốn)
Hãy tạo một kho lưu trữ tar được gzipped từ các bản sao lưu từ xa của chúng tôi được sao chép từ Mac Workstation -
[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz
Note- Thay vì thêm tất cả các tệp trực tiếp vào kho lưu trữ, chúng tôi đã lưu trữ toàn bộ thư mục RemoteStuff . Đây là phương pháp dễ dàng nhất. Đơn giản vì khi giải nén , toàn bộ thư mục RemoteStuff được giải nén cùng với tất cả các tệp bên trong thư mục đang làm việc hiện tại là ./currentWorkingDirectory/RemoteStuff/
Bây giờ hãy giải nén kho lưu trữ bên trong thư mục / root / home.
[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com
Như đã thấy ở trên, tất cả các tệp chỉ được trích xuất vào thư mục chứa trong thư mục làm việc hiện tại của chúng tôi.
[root@centos ~]# ls -l
total 2262872
-rw-------. 1 root root 1752 Feb 1 19:52 anaconda-ks.cfg
drwxr-xr-x. 137 root root 8192 Mar 9 04:42 etc_baks
-rw-r--r--. 1 root root 1800 Feb 2 03:14 initial-setup-ks.cfg
drwxr-xr-x. 6 rdc rdc 4096 Mar 10 22:20 RemoteStuff
-rw-r--r--. 1 root root 2317140451 Mar 12 07:12 RemoteStuff.tgz
-rw-r--r--. 1 root root 9446 Feb 25 05:09 ssl.conf [root@centos ~]#
Sử dụng gzip để Nén tệp sao lưu
Như đã lưu ý trước đó, chúng ta có thể sử dụng bzip2 hoặc gzip từ tar với -j hoặc là -zchuyển dòng lệnh. Chúng tôi cũng có thể sử dụng gzip để nén các tệp riêng lẻ. Tuy nhiên, chỉ sử dụng bzip hoặc gzip không cung cấp nhiều tính năng như khi kết hợp với tar .
Khi sử dụng gzip , hành động mặc định là xóa các tệp gốc, thay thế mỗi tệp bằng một phiên bản nén có thêm phần mở rộng .gz.
Một số công tắc dòng lệnh phổ biến cho gzip là:
Công tắc điện | Hoạt động |
---|---|
-c | Giữ các tệp sau khi đặt vào kho lưu trữ |
-l | Nhận thống kê cho kho lưu trữ đã nén |
-r | Nén đệ quy các tệp trong thư mục |
-1 đến 9 | Chỉ định mức nén trên thang điểm từ 1 đến 9 |
gzip ít nhiều hoạt động trên cơ sở từng tệp chứ không phải trên cơ sở lưu trữ như một số tiện ích zip của Windows O / S. Lý do chính cho điều này là tar đã cung cấp các tính năng lưu trữ nâng cao. gzip được thiết kế để chỉ cung cấp một cơ chế nén.
Do đó, khi nghĩ đến gzip , hãy nghĩ đến một tệp duy nhất. Khi nghĩ đến nhiều tệp, hãy nghĩ đến các kho lưu trữ tar . Bây giờ chúng ta hãy khám phá điều này với kho lưu trữ tar trước của chúng tôi .
Note - Các chuyên gia Linux dày dạn kinh nghiệm thường coi một kho lưu trữ tarred là một tarball.
Hãy tạo một kho lưu trữ tar khác từ bản sao lưu rsync của chúng tôi .
[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/
Với mục đích trình diễn, hãy gzip tệp tarball mới được tạo và yêu cầu gzip giữ tệp cũ. Theo mặc định, không có tùy chọn -c , gzip sẽ thay thế toàn bộ kho lưu trữ tar bằng một tệp .gz .
[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.
Hãy thử kiểm tra công tắc -l với gzip .
[root@centos Documents]# gzip -l RemoteStuff.tar.gz
compressed uncompressed ratio uncompressed_name
2317140467 2326661120 0.4% RemoteStuff.tar
[root@centos Documents]#
Để chứng minh gzip khác với Windows Zip Utilities như thế nào , hãy chạy gzip trên một thư mục tệp văn bản.
[root@centos Documents]# ls text_files/
file1.txt file2.txt file3.txt file4.txt file5.txt
[root@centos Documents]#
Bây giờ hãy sử dụng tùy chọn -r để nén đệ quy tất cả các tệp văn bản trong thư mục.
[root@centos Documents]# gzip -9 -r text_files/
[root@centos Documents]# ls ./text_files/
file1.txt.gz file2.txt.gz file3.txt.gz file4.txt.gz file5.txt.gz
[root@centos Documents]#
Xem? Không phải những gì một số có thể đã dự đoán. Tất cả các tệp văn bản gốc đã bị xóa và mỗi tệp được nén riêng lẻ. Do hành vi này, tốt nhất bạn nên nghĩ đến gzip một mình khi cần làm việc trong các tệp đơn lẻ.
Làm việc với tarball , hãy giải nén tarball rsynced của chúng ta vào một thư mục mới.
[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
Như đã thấy ở trên, chúng tôi đã giải nén và giải nén tarball của chúng tôi vào thư mục / tmp.
[root@centos Documents]# ls /tmp
hsperfdata_root
RemoteStuff
Mã hóa lưu trữ TarBall
Mã hóa kho lưu trữ tarball để lưu trữ các tài liệu an toàn có thể cần được các nhân viên khác của tổ chức truy cập, trong trường hợp khắc phục thảm họa, có thể là một khái niệm phức tạp. Về cơ bản có ba cách để thực hiện việc này: sử dụng GnuPG hoặc sử dụng openssl hoặc sử dụng tiện ích phần thứ ba.
GnuPG chủ yếu được thiết kế cho mã hóa không đối xứng và có liên quan đến danh tính hơn là cụm mật khẩu. Đúng, nó có thể được sử dụng với mã hóa đối xứng, nhưng đây không phải là điểm mạnh chính của GnuPG. Vì vậy, tôi sẽ giảm giá GnuPG để lưu trữ các kho lưu trữ với bảo mật vật lý khi nhiều người hơn người ban đầu có thể cần quyền truy cập (chẳng hạn như có thể một người quản lý công ty muốn bảo vệ khỏi Quản trị viên nắm giữ tất cả các chìa khóa của vương quốc làm đòn bẩy).
Openssl như GnuPG có thể làm những gì chúng ta muốn và giao hàng với CentOS. Nhưng một lần nữa, nó không được thiết kế đặc biệt để làm những gì chúng ta muốn và mã hóa đã bị nghi ngờ trong cộng đồng bảo mật.
Sự lựa chọn của chúng tôi là một tiện ích có tên 7zip. 7zip là một tiện ích nén giống như gzip nhưng có nhiều tính năng hơn. Giống như Gnu Gzip, 7zip và các tiêu chuẩn của nó nằm trong cộng đồng mã nguồn mở. Chúng ta chỉ cần cài đặt 7zip từ Kho lưu trữ EHEL của mình (chương tiếp theo sẽ trình bày chi tiết việc cài đặt Kho lưu trữ Doanh nghiệp Mở rộng).
Cài đặt 7zip trên Centos
7zip là một cài đặt đơn giản sau khi kho lưu trữ EHEL của chúng tôi đã được tải và định cấu hình trong CentOS.
[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB 00:00:00
epel/x86_64/metalink
| 13 kB 00:00:00
epel
| 4.3 kB 00:00:00
extras
| 3.4 kB 00:00:00
updates
| 3.4 kB 00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB 00:00:04
(2/2):
epel/x86_64/primary_db
| 4.6 MB 00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
Đơn giản như vậy, 7zip đã được cài đặt và sẵn sàng sử dụng với mã hóa AES 256-bit cho các kho lưu trữ tarball của chúng tôi.
Bây giờ, chúng ta hãy sử dụng 7z để mã hóa kho lưu trữ được nén bằng mật khẩu. Cú pháp để làm như vậy khá đơn giản -
7z a -p <output filename><input filename>
Ở đâu, a: thêm vào kho lưu trữ, và -p: mã hóa và nhắc cụm mật khẩu
[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)
Creating archive: RemoteStuff.tgz.7z
Items to compress: 1
Enter password (will not be echoed):
Verify password (will not be echoed) :
Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz RemoteStuff.tgz.7z slapD
text_files
[root@centos Documents]#
Bây giờ, chúng tôi có kho lưu trữ .7z mã hóa tarball được gzipped với 256-bit AES.
Note- 7zip sử dụng mã hóa AES 256-bit với mã băm SHA-256 của mật khẩu và bộ đếm, được lặp lại tới 512K lần để lấy ra khóa. Điều này phải đủ an toàn nếu sử dụng khóa phức tạp.
Quá trình mã hóa và giải nén thêm tệp lưu trữ có thể mất một chút thời gian với các tệp lưu trữ lớn hơn.
7zip là một dịch vụ nâng cao với nhiều tính năng hơn gzip hoặc bzip2. Tuy nhiên, nó không phải là tiêu chuẩn với CentOS hoặc trong thế giới Linux. Vì vậy, các tiện ích khác nên được sử dụng thường xuyên nhất có thể.