Linux - Tôi nên loại trừ những thư mục nào khi sao lưu máy chủ?


37

Tôi đang sao lưu một máy chủ Linux và lưu trữ nó trên một máy chủ khác.

Tôi bắt đầu với một đơn giản

rsync -aPh --del server.example.com:/ /mnt/backup

Sau đó, một người nào đó đã chỉ ra rằng tôi không nên sao lưu /proc, vì bạn không muốn khôi phục /procmáy chủ này trên máy chủ khác.

Có bất cứ điều gì khác mà tôi nên / không nên bao gồm?

Ví dụ, những gì về /sys?

Câu trả lời:


24

Điều này thực sự phụ thuộc vào cách bạn sẽ khôi phục hệ thống của bạn. Nếu bạn sẽ xây dựng lại thì bạn chỉ cần các tệp cấu hình / dữ liệu cho các dịch vụ của mình (ví dụ: / etc, / opt, / var, / home)

Nếu bạn sau khi khôi phục toàn bộ hệ thống, thì bạn có thể bỏ qua / Proc, / boot & / dev. Sau đó, bạn có thể cài đặt hệ điều hành tối thiểu từ phương tiện khởi động và sau đó khôi phục hệ thống của bạn thông qua bản sao lưu của bạn.

Tất nhiên, bản sao lưu tốt nhất là bản đã được kiểm traxác minh .

Vì vậy, bỏ qua những gì bạn không nghĩ là mình cần, hãy thử khôi phục trong VM và xác minh bạn có thể lấy lại hệ thống của mình bằng dữ liệu này.


5
Đừng bỏ qua /boothoàn toàn - bạn có thể cần so sánh cấu hình khởi động cũ với cấu hình khởi động mới. Chỉ cần chắc chắn không khôi phục /boot ngoại trừ bằng tay.
quack quixote

5
Và loại trừ / sys nữa ... Và để khôi phục lại kim loại trần, bạn cũng nên loại trừ /etc/udev/rules.d/.
wazoox

2
cũng bị mất + tìm thấy cho hệ thống tệp, / mnt và / media không sao chép bất kỳ thiết bị được gắn nào
lưỡi dao

29

Cả hai /proc/syslà các hệ thống tệp ảo phản ánh trạng thái của hệ thống và cho phép bạn thay đổi một số tham số thời gian chạy (và đôi khi làm những việc nguy hiểm hơn, như ghi trực tiếp vào bộ nhớ hoặc vào thiết bị). Bạn không bao giờ nên sao lưu hoặc khôi phục chúng.

Trong hầu hết các bản phân phối hiện đại, /devđược tạo động khi khởi động (nó là một hệ thống tệp bộ nhớ được điền bởi udevvà bạn bè). Không có điểm nào trong việc sao lưu nó và cố gắng khôi phục nó là vô ích. Tuy nhiên, nếu phân phối của bạn được cấu hình để sử dụng một tĩnh /dev, điều này không áp dụng (kiểm tra /proc/mounts, nếu /devlà một tmpfsnó là một hệ thống tập tin bộ nhớ).

Có những hệ thống tập tin khác mà bạn không nên sao lưu; usbfs(thường tại /proc/bus/usb, nếu gắn tại tất cả), debugfs(nghĩa vụ phải được ở /sys/kernel/debugnếu gắn ở tất cả, nhưng một số người đặt nó ở một nơi khác, bạn có lẽ không có cái này), devpts(gắn ở /dev/pts), khác tmpfstrường hợp (thường được tìm thấy ở /dev/shm, /var/run, /var/lockvà những nơi khác, sao lưu chúng và khôi phục chúng sẽ vô hại nhưng vô nghĩa, vì nội dung của chúng bị mất khi tắt máy), và bất kỳ hệ thống tập tin từ xa hoặc thư mục tự động ma thuật nào (cố gắng sao lưu hoặc khôi phục chúng có thể gặp thảm họa, như bạn có thể kết thúc sao lưu / khôi phục vào một máy khác ). Bạn cũng nên cẩn thận với /media/mnt, vì các thiết bị bên ngoài (như đĩa CD bạn đã quên trong ổ đĩa) có thể được tìm thấy ở đó, nhưng bạn cũng có thể đã sử dụng chúng trên mục đích để gắn một cái gì đó cần được sao lưu.

Lưu ý rằng, khác với hầu hết là vô hại tmpfstrường hợp, hệ thống tập tin mạng / automounters, và phương tiện di động, hệ thống tập tin bạn không nên sao lưu tất cả đều hậu duệ của /dev, /prochoặc /sys. Nếu bạn không có hệ thống tập tin mạng (hoặc automounters), và không có phương tiện di động, trừ /sys/procvà khởi động lại sau một khôi phục lại (để lau tmpfscác trường hợp) nên là đủ.



8

Một số tệp đặc biệt trong / Proc và / sys nhầm lẫn rsync. Bạn thường không muốn sao lưu các hệ thống tập tin mạng được gắn kết. Các tập tin thưa thớt cũng có thể gây ra vấn đề.

Thêm -x để giới hạn nó vào một hệ thống tệp. Điều đó tránh tất cả các hệ thống tệp mạng và / Proc, v.v. Tuy nhiên, sau đó bạn cần chạy một rsync cho mỗi hệ thống tệp bạn đã gắn.

Thêm -S để xử lý các tệp thưa thớt một cách hợp lý.


4

/ boot, / dev và / Proc khá vô dụng để sao lưu - tuy nhiên, nếu bạn biết bạn đang làm gì, bạn có thể sao lưu / khởi động.

Tôi cũng sẽ không sao lưu / lib, / media, / mnt, / sbin, / bin, / srv, / sys hoặc / tmp.

/ usr là tùy chọn, tùy thuộc vào việc bạn có bất cứ thứ gì trong / usr có giá trị sao lưu hay không. Nếu tôi là bạn, tôi lo lắng nhất về việc sao lưu $ HOME, / var và / etc của người dùng (đối với các tệp cấu hình).

Một lần nữa, điều này thực sự phụ thuộc vào loại sao lưu bạn muốn làm. Đây có phải là một máy chủ web? Đây có phải là một máy tính cá nhân? Đây có phải là một máy chủ shell với hàng tấn thư mục dưới / nhà?


Tôi muốn khôi phục bằng cách sử dụng nhân bản sao lưu vào một máy mới
Rory

Bạn có ý nghĩa gì khi "nhân bản"? Bạn luôn có thể sao lưu các phân vùng thô bằng cách sử dụng dd và sfdisk sfdisk -d> phân vùng_table.part dd if = / dev / sda1 of = dev.sda1.img (làm điều này cho mỗi phân vùng) / sda <partition_table.part dd if = dev.sda1.img of = / dev / sda1 (đối với mỗi phân vùng, một lần nữa)
Michael Pobega

Vì hệ thống bình luận không thích thẻ mã, tôi đã đăng một câu trả lời khác.
Michael Pobega

@MichaelPobega Nếu bạn sao lưu các phân vùng thô như bạn đang nói thì bạn phải sao chép toàn bộ kích thước đĩa. Tại sao sao chép 512GB khi bạn chỉ sử dụng 80BG đĩa? Với rsyncbạn, bạn không chỉ sao chép những gì bạn đã sử dụng mà còn cho phép đồng bộ hóa trong tương lai, do đó bạn có thể chạy một công việc định kỳ cho nó một cách an toàn.
Tối đa

Trở lại những năm sau này, một thập kỷ kinh nghiệm của tôi đã dạy tôi rằng bạn đúng @Max.
Michael Pobega

3

Bạn có thể đạt được một bản sao lưu tổng thể bằng sfdisk và dd.


Để sao lưu sơ đồ phân vùng của mỗi ổ cứng, bạn sẽ sử dụng sfdisk như thế này:

sfdisk -d /dev/sda  > parttable_sda.part

Để sao lưu từng phân vùng, bạn có thể sử dụng dd, như vậy:

dd if=/dev/sda1 of=devsda1.img

Trường hợp không /dev/sda1được đếm, chẳng hạn như với một khởi động CD trực tiếp.

.


Sau đó, để khôi phục trên một máy tính khác, bạn có thể làm:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition

3
CẢNH BÁO: chỉ thực hiện việc này nếu phân vùng không được đếm hoặc gắn chỉ đọc. Việc bỏ nội dung thô của một phân vùng trong khi nó được viết để có thể kết thúc với một hệ thống tệp không nhất quán xấu trên bản sao lưu (vì các khối gần đầu hệ thống tệp được sao chép "sớm hơn" các khối gần cuối và hệ thống tệp không phải là hệ thống tệp mong đợi điều này, bạn có thể tránh được vấn đề này nếu bạn bằng cách nào đó có thể chụp ảnh nguyên tử của hệ thống tập tin). fsck sẽ không giúp bạn, vì các thuật toán của nó cũng phụ thuộc vào thứ tự hệ thống tập tin ghi vào đĩa.
CesarB

dd là con đường để đi. Khởi động trên LiveCD, tất nhiên. Và điều quan trọng là dd if=/dev/urandom of=/dev/sdb bs=512 count=12phải xóa MBR và bảng phân vùng của ổ đĩa đích.
SDsolar

2

Thay vì loại trừ, tôi thường chỉ sao lưu những gì tôi muốn. Bao gồm: /home /etc /var(ngoại trừ /var/log)


1

Về cơ bản, các hệ thống tập tin giả (/ Proc, / sys, / dev / shm ...) không cần được sao lưu.


1

Như được chỉ ra bởi cộng đồng tuyệt vời này:

/ dev / Proc / sys / tmp / run / media / Mất + Found / boot (/ boot là tùy chọn xem các bình luận khác)

Để tham khảo lệnh rsync cuối cùng của tôi (trong Arch với phương tiện bên ngoài được gắn trong '/ run / media / fred / INTENSO /' và sao lưu vào thư mục có tên 'fred') là:

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / Mất + Found --exclude / tmp --exclude / Proc --exclude / boot --exclude / sys / / run / media fred / INTENSO / fred /.

(các tệp bị loại trừ cũng có thể được chỉ định bằng dấu ngoặc nhọn (--exclude = {/ dev, / Proc}) trong Bash hoặc với tệp văn bản (--exclude-from = 'excude.txt')).

-P: hiển thị tiến trình -a: chế độ lưu trữ -z: nén trong khi chuyển -h: số đầu ra ở định dạng có thể đọc được -m: prune thư mục trống -x: giới hạn ở một tệp-system -v: verbose


1

Tôi đang sử dụng máy Ubuntu 18.04 và tôi đã loại trừ:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Ngoài ra, cụ thể cho thiết lập của tôi, tôi loại trừ những điều sau:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk

0

Tôi thường tạo thói quen sao lưu mọi thứ trên một hệ thống, ngay cả những thứ mà tôi biết chắc chắn là vô dụng để sao lưu. Việc cài đặt đơn giản hơn và bạn có thể chắc chắn 100% rằng bạn sẽ có mọi thứ bạn cần có trong bản sao lưu.


1
có, nhưng câu hỏi tiếp theo là những gì bạn làm lại từ bản sao lưu của bạn là không cần thiết?
Rory

Tôi sẽ trả lời: "không có gì".
Maximus Minimus

Thật. Bạn loại trừ nó khỏi quá trình khôi phục, không phải bản sao lưu. Nhưng có lẽ bạn vẫn muốn bỏ đi /proc/devđể không nhầm lẫn chút nghèo rsync.
TJ Crowder

1
@mh, bạn sẽ khôi phục / Proc / kcore, bộ nhớ của máy chủ gốc là gì? nghe có vẻ hơi ngớ ngẩn ...
Rory

0

Tôi đang sử dụng hộp Ubuntu linux làm máy chủ thử nghiệm để phát triển trang web và để lưu trữ wiki tài liệu. Mỗi đêm, một crontab đưa cơ sở dữ liệu MySQL vào / var / www, và sau đó tất cả / var / www được nén và sao chép vào máy chủ sao lưu. Nó không lý tưởng, nhưng nó là đủ. Tôi đã phải xây dựng lại máy chủ tại một thời điểm và tất cả những gì tôi thực sự bỏ lỡ là các tệp cấu hình Apache và Samba.


0

Tôi cho rằng bạn không có Linux trên máy ảo. Nếu có thể, tôi sẽ thôi thúc xem xét chuyển sang ảo hóa. Sao lưu trên cấp độ vm là một cấp độ hoàn toàn mới và dễ sử dụng. Có các công cụ ảo hóa miễn phí, vì vậy bạn không nhất thiết phải đầu tư vào VmWare hoặc công cụ quái vật đắt tiền khác.


0

Câu hỏi: Tôi nên loại trừ những thư mục nào khi sao lưu máy chủ?

Đây là tập lệnh tôi thường sử dụng, từ máy tính xách tay Ubuntu 16.04 LTS đến máy chủ Ubuntu 16.04 LTS. Nó hiển thị rõ ràng những thư mục nào nên được bỏ qua trong khi tạo bản sao lưu đầy đủ:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

Lưu ý loại trừ /mnt- đó là nơi mỗi hệ thống Ubuntu có ổ đĩa sao lưu toàn thời gian được gắn để rsynctự sao lưu dựa trên cron 4 lần một ngày. Các ổ đĩa này được gắn kết bởi các mục trong fstabvà luôn luôn có mặt. Để đưa chúng vào một bản sao lưu cho một hệ thống khác sẽ là bản sao.

Tương tự, /medialà nơi các ổ USB được gắn kết. Chúng được sao lưu riêng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.