Những thư mục cần bao gồm trong sao lưu?


28

Tôi còn khá mới với Ubuntu và muốn tạo bản sao lưu. Tôi thực sự không chắc chắn bao gồm các tập tin và thư mục để nếu tôi khôi phục hệ thống của mình thì nó sẽ như hiện tại. Tôi dường như không thể tìm thấy chi tiết tốt về điều này ở bất cứ đâu. Hy vọng ai đó có thể giúp tôi với điều này. Có thể sao lưu mọi thứ như hiện tại không, vì vậy trong trường hợp khôi phục hệ thống, tôi không phải cài đặt lại chương trình và cài đặt?


Vâng, tôi cũng muốn biết các tập tin quan trọng là gì mà không cần phải sao lưu toàn bộ ổ đĩa. Crontabs (root và user), exportfs, v.v.
Sridhar Sarnobat

Câu trả lời:


25

Bộ sao lưu của tôi hiện có chứa

/etc
/home
/root
/srv
/usr (/usr/local only, nothing else)
/var (except /var/run, /var/cache, /var/tmp)

Lưu ý đây là dành cho máy chủ, vì vậy sao lưu những thứ như / etc lưu tất cả cấu hình của tôi cho các dịch vụ của tôi, tôi có máy chủ web trong / srv (mặc dù nếu bạn có chúng trong / var / www , chúng vẫn sẽ nằm trong bộ sao lưu này) , Tôi có nhiều tập lệnh và nội dung được thiết lập trong / usr / local , v.v. Sao lưu / nhà thay vì / home / myusername để tôi có thể bảo vệ tất cả người dùng. Nếu tất cả những gì bạn muốn giữ là dữ liệu người dùng của bạn, bạn chỉ cần thư mục chính của bạn.


Tại sao bạn bao gồm / root?
Mohammed Joraid

2
Đó là thư mục chính của người dùng root, tôi giữ một số tập lệnh sysadmin trong đó, để sao lưu, v.v. Mặc dù tôi đã chuyển hầu hết các tập lệnh này sang/usr/local/sbin/
thomasrutter

Có cần bao gồm .cachethư mục trong mỗi thư mục nhà của người dùng ( ~/.cache) không, hay chúng ta cũng có thể bỏ qua điều đó? Nó có thể là hàng chục ngàn tệp và nhiều gigabyte dữ liệu. Tôi hiểu rằng nếu chúng ta không bao gồm nó, điều đó chỉ có nghĩa là các ứng dụng phải tạo lại các tệp tạm thời, được lưu trong bộ nhớ cache lần sau khi chúng chạy, điều này làm tăng thời gian chạy và thời gian khởi động nhưng vô hại, phải không?
Gabriel Staples

1
Không bao gồm ~/.cacheâm thanh ok với tôi. Tôi không tự loại trừ nó nhưng nếu bạn muốn cắt giảm thời gian truyền / đồng bộ dữ liệu, đó có thể là một lựa chọn.
thomasrutter

1
@GabrielStaples Tôi không sử dụng /optnhưng nếu bạn sử dụng nó, thì bạn có thể đưa nó vào bản sao lưu của mình. /optcó xu hướng không được sử dụng bởi các bản phân phối để lại cho người dùng, nhưng các nhà cung cấp ứng dụng cung cấp hệ thống Linux với ứng dụng bên thứ ba của họ được cài đặt trên đó có thể sử dụng /opthoặc nếu bạn phát triển phần mềm của riêng mình, bạn có thể sử dụng phần mềm /optthay vì/usr/local
thomasrutter

10

Những gì bạn cần sao lưu phụ thuộc vào hệ thống cụ thể của bạn *.

Vì vậy, điều này sẽ mất một chút công việc từ phía bạn để sắp xếp. Bắt đầu bằng cách tìm ra những gì không cần phải sao lưu. Đầu tiên hãy xem thư mục gốc của bạn, và sau đó làm việc ngược lại.

Ví dụ, cd /; ls -Fcho tôi:

bin/    initrd.img@      mnt/   snap/  vmlinuz@
boot/   initrd.img.old@  opt/   srv/   vmlinuz.old@
cdrom/  lib/             proc/  sys/
dev/    lib64/           root/  tmp/
etc/    lost+found/      run/   usr/
home/   media/           sbin/  var/

/cdrom, /media/mntlà các điểm gắn kết vì vậy không cần sao lưu.

/dev, /lost+found, /proc, /run, /sys/tmpget tự động tái tạo trên khởi động lại. [Tôi đoán các liên kết: /initrd.img@, /initrd.img.old@, /vmlinuz@, /vmlinuz.old@ được tái tạo khi khởi động ubuntu cài đặt lại (tôi không chắc chắn mà).]

Trên hệ thống của tôi /roottrống (sử dụng sudo -sđể mở shell là người dùng root để xem nó ... hãy cẩn thận exitngay lập tức sau khi bạn kiểm tra /root.)

/snapcũng trống rỗng Có lẽ đó là một điểm gắn kết.

/varchứa dữ liệu biến như các tệp nhật ký hệ thống, thư mục bộ đệm thư và máy in, và các tệp tạm thời và tạm thời. "Bây giờ tôi sao lưu nó, ngoại trừ / var / log. ref: http://www.tldp.org/LDP/Linux- Hệ thống phân cấp tập tin / html / var.html )

/bin, /boot, /lib, /lib64, Và /sbincó lẽ sẽ được tải lại thông qua một cài đặt lại của Ubuntu, trừ khi bạn đang làm công việc phát triển hệ thống hoặc một cái gì đó như thế. Bạn có thể sao lưu chúng hoặc dựa vào bản cài đặt mới để khôi phục chúng.

/homenên ở trong bản sao lưu của riêng nó. Sẽ có lúc bạn muốn khôi phục lại /home.

Đó lá thay đổi khác mà bạn đã thực hiện cho hệ thống của bạn trong /etc, /opt, /srv, và /usrbạn sẽ muốn cũng sao lưu, cùng nhau hoặc riêng rẽ.

Dưới đây là một vài trang có thể giúp hiểu các thư mục này:

http://www.tldp.org/LDP/Linux-Filesystem-HVELy/html/the-root-directory.html http://www.tldp.org/LDP/intro-linux/html/sect_03_01.html#sect_03_01_03


Một dòng suy nghĩ liên quan là: Giả sử bạn vừa cài đặt Ubuntu mới. Bạn cần gì để sao lưu? Trả lời: không có gì. Bạn chưa thay đổi bất cứ điều gì, vì vậy bạn chỉ cần cài đặt lại Ubuntu. Nó khôi phục / bin, / etc, / root, / usr, v.v.

Vì vậy, lý do duy nhất bạn có thể muốn sao lưu / bin là vì bạn đã thay đổi hoặc thêm vào nó. Vì vậy, một phần của việc sao lưu là hiểu được đâu là khi nào và khi nào nó được tạo và sửa đổi. Chỉ biết rằng phần còn lại của chúng tôi đấu tranh với điều này quá.


***** Và, mặc dù bạn không hỏi, người ta có thể tạo toàn bộ hình ảnh đĩa hoặc phân vùng. Việc này mất rất nhiều thời gian để sao lưu và khôi phục và có thể khiến hệ thống của bạn ngừng hoạt động trong khi công việc đó đang được tiến hành. Và đó là cách tôi sử dụng để sao lưu các hệ thống Windows của mình bằng Acronis. Một thứ họ cung cấp cho bạn là bản đồ phân vùng và hình ảnh từ các phân vùng không phải linux. Bây giờ tôi thực hiện những điều này trước khi tôi sắp xếp lại các phân vùng và trước khi tôi kiểm tra các chức năng khôi phục sao lưu của mình.


(Tôi rất cởi mở với các đề xuất về cách tôi có thể làm cho điều này tốt hơn.)


Điều này thật tuyệt vời khi bạn tập trung vào cấu hình và không cần nhị phân, như bạn nói chúng có thể được cài đặt lại và điều này nhẹ hơn nhiều để xuất khẩu và hơn là cài đặt lại Askubfox.com / a / 55906/102323
CTS_AE

5

Nếu tôi cài đặt lại hệ thống máy tính để bàn của mình, tôi sẽ sao lưu

  • /etc
  • /var, Tôi quá lười để loại trừ một số thư mục con
  • /opt

/homelà trên một phân vùng riêng biệt và có một bản sao lưu được thực hiện mỗi ngày .

Sau khi cài đặt lại, tôi khôi phục các phần từ bản sao lưu của mình, thứ mà tôi thực sự cần.

Với chiến lược này, tất cả các cấu hình, thư cục bộ và cấu hình crontab của tôi đều an toàn và tôi chỉ phải cài đặt lại các ứng dụng cần thiết của mình.

Kịch bản cá nhân của tôi được lưu trong thư mục nhà của tôi (sao lưu hàng ngày, nhớ không?), Do đó tôi không sử dụng /usr/local.


1
Nó có hoạt động không nếu tôi sao lưu root, đó là tất cả mọi thứ?: ./
Đình chỉ

Nó sẽ giống như một bản sao của những gì tôi đang sử dụng.
Đình chỉ

Những gì /optchúng ta cần là gì? tức là: tại sao lại sao lưu nó?
Gabriel Staples

3

Hầu hết mọi người chỉ cần sao lưu thư mục nhà của họ : /home/$USER/. Nếu bạn muốn sao lưu các tệp cấu hình và cài đặt, chúng sẽ được lưu trong các thư mục và tệp trong thư mục chính của bạn bắt đầu bằng a. (chấm). Lập danh sách các gói bạn sử dụng (và PPA) và sẽ dễ dàng cài đặt lại tất cả các gói bạn cần. Hoặc, sử dụng lệnh được mô tả trong nhận xét này .

Deja Dup Backup là một công cụ tuyệt vời được mặc định trên Ubuntu. Các tùy chọn khác bao gồm dòng lệnh (rsync, rsnapshot, ndiff-backup, v.v.).

Cuối cùng, để sao lưu toàn bộ đĩa dưới dạng hình ảnh, hãy kiểm tra clonezilla .


2
Ngoài ra, ngoài câu trả lời mà psny liên kết đến, sẽ không hại gì khi tạo bản sao lưu của toàn bộ thư mục / etc / lưu trữ các cài đặt toàn hệ thống. Nếu bạn đã thực hiện một số thay đổi ở đó, sẽ rất hữu ích khi có một kho lưu trữ để có được những thay đổi đó.
Marcin Kaminski

2
Nếu bạn có bất kỳ thiết lập crontabs, thì /var/spool/croncũng sao lưu .
Ian Dunn

3

Hãy thu thập một danh sách các tập tin ở đây. Tôi đã thực hiện bài đăng này "wiki cộng đồng."

Tất nhiên, nó thay đổi từ người này sang người khác. Của tôi được sử dụng chủ yếu như một máy chủ web và máy chủ NFS.

mkdir $MY_BACKUP_FOLDER
cd $MY_BACKUP_FOLDER

crontabs

sudo rsync -a --relative /var/spool/cron/crontabs .

Cổ phiếu NFS

sudo rsync -a --relative /etc/exports .

sudoers

sudo rsync -a --relative /etc/sudoers .

cấu hình apache

sudo rsync -a --relative /etc/apache2/apache2.conf .

tự động

sudo rsync -a --relative /etc/auto* .

fstab

sudo rsync -a --relative /etc/fstab .

máy chủ

sudo rsync -a --relative /etc/hosts .

samba

sudo rsync -a --relative /etc/samba/smb.conf .

Quy tắc thiết bị USB (udev)

sudo rsync -a --relative /etc/udev .

hệ thống

mlocate

sudo rsync -a --relative /etc/updatedb.conf .

Trình khởi chạy Ubuntu ("Menu bắt đầu") .desktop tệp, incl. bất kỳ tùy chỉnh nào bạn đã thiết lập:

sudo rsync -a --relative /usr/share/applications .

thư mục nhà có thể được bảo tồn nếu bạn cài đặt lại Ubuntu


1

Chỉ cần một lời nhắc nếu bạn đang sử dụng DejaDup (hoặc bất cứ thứ gì khác thực sự), cũng loại trừ mọi thư mục lưu trữ đám mây (có thể trong nhà bạn), chẳng hạn như Dropbox. Nếu bạn đang trả tiền cho bộ lưu trữ s3 thì đây có thể là một sai lầm tồi tệ.


0

Sử dụng sao lưu Deja Dup. Nó được cung cấp theo mặc định. Đi tới cài đặt và chỉ giữ thư mục gốc ( /) dưới dạng "thư mục cần bao gồm" và thêm thư mục phương tiện ( /media) vào "thư mục cần bỏ qua".

Do đó, tất cả các chương trình của bạn sẽ được sao lưu trong trường hợp hỏng hệ thống (hiếm) ngoại trừ các ổ đĩa khác của bạn thường không bị ảnh hưởng.


0

Tôi sao lưu những gì quan trọng đối với tôi, thứ có thể được định nghĩa một cách lỏng lẻo là tài sản trí tuệ của tôi cộng với những nỗ lực dành cho việc cấu hình Ubuntu để hoạt động hoàn hảo (đối với tôi).

Tôi có bản sao lưu chạy vào mỗi buổi sáng lúc 4:00 sáng hoặc bất cứ khi nào Laptop tiếp tục bị đình chỉ. Nó được kiểm soát thông qua /etc/cron.dailykịch bản.

Loại sao lưu tốt nhất là ngoài trang web trong trường hợp hỏa hoạn hoặc lũ lụt, nơi máy tính ngồi, vì vậy tôi tận dụng tài khoản gmail 15GB miễn phí và gửi một bản sao lưu hàng ngày được nén ở đó.

Sau một vài năm, tôi đã đạt được dung lượng "miễn phí" 15 GB, vì vậy tôi đã viết một kịch bản để tái chế các bản sao lưu thành 180 ngày, 78 tuần, 36 tháng và 100 bản sao lưu hàng năm.

Đây là kịch bản sao lưu hàng ngày của những gì quan trọng đối với tôi:

#!/bin/bash

# NAME: daily-backup.sh
# PATH: /mnt/e/bin
# DESC: Backup scripts, documents and configuration files to .tar

# DATE: July 11, 2017. Modified July 7, 2019.

HomeDir="/home/USER_NAME"                    # Required for cron compatibility
EmailAddr="EMAIL_NAME@gmail.com"

# PARM: 1=backup file name. Extension .tar.gz automatically appended.

# NOTE: To include MBR (Master Boot Record) in backup create an image using:
#       sudo dd if=/dev/sda of="$HOME/.mbr.sav" bs=512 count=1

# NOTE: CLONE CURRENT INSTALLATION TO NEW MACHINE
#       =========================================

#       To restore use Live USB to install Ubuntu alongside Windows 10
#       Connect to network with password xxxxxxxxx

#       Install Google Chrome
#       (https://askubuntu.com/questions/510056/how-to-install-google-chrome):

#           wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub 
#               | sudo apt-key add
#           echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/
#               stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
#           sudo apt update
#           sudo apt install google-chrome-stable

#       Open gmail.com and download attachment `$1` which is usually called
#           Backup-yymmdd-DayOfWeekName.tar

#       Make missing home/bin directory which tar doesn't create automatically:
#           mkdir ~/bin

#       Restore the daily backup using:
#           sudo tar -xvf Backup-yymmdd-DayFfWeekName.tar -C /
#           yar -xvf Backup-yymmdd-DayFfWeekName.tar -C /

#       Patch /etc/default/grub with new machine parameters, ie for nvme use:
#           acpiphp.disable=1

#       Use `sudo apt install aptitude-common`
#       Clone packages using `aptitude-create-state-bundle` on Source
#       Copy state-bundle.tar file from Source to Target machine
#       Restore packages using `aptitude-run-state-bundle` on Target

#       Manually copy ~/Pictures, ~/Videos, etc. not in daily backup.

#       sudo update-grub        # NVMe suspend/resume acpiphp.disable=1
#       sudo update-initramfs   # to get plymouth sunrise splash screen

if [[ $# -ne 1 ]]; then
    echo 'One argument required for file name, e.g. "Backup-2017-10-21-Saturday"'
    echo '.tar will automatically be added as a file extension'
    exit 1
fi

Filename="$1.tar"

cd $HomeDir ||
    exit 1

dpkg --get-selections > .packages       # List of installed applications

tar -cvpf "$Filename" bin               # create .tar & add user scripts
tar -rvpf "$Filename" .config/autostart # autostart programs configuration
tar -rvpf "$Filename" /usr/local/bin    # add global root-based scripts
tar -rvpf "$Filename" /etc/cron*        # crontab, cron.d, cron.daily, etc
tar -rvpf "$Filename" /etc/system*      # systemd files: login.conf, etc.
tar -rvpf "$Filename" /lib/systemd/system-sleep
tar -rvpf "$Filename" /etc/rc.local     # Startup script: calls zaprestore.
tar -rvpf "$Filename" /etc/sudoers      # 120 minute sudo, stars in password
tar -rvpf "$Filename" /etc/environment  # PATH backup
tar -rvpf "$Filename" /etc/default/grub # bootstrap loader
#July 20, 2018 - /boot/grub takes 5MB+
#tar -rvpf "$Filename" /boot/grub        # Custom grub fonts and splash...
tar -rvpf  "$Filename" /usr/share/plymouth   # ... screen (plymouth)
#included above tar -rvpf "$Filename" /usr/share/plymouth/themes/earth-sunrise/
tar -rvpf "$Filename" /usr/share/grub/themes/Tuxkiller2/
tar -rvpf "$Filename" /etc/grub.d       # 00_header, etc. changes
tar -rvpf "$Filename" Desktop           # files and links on desktop
tar -rvpf "$Filename" Documents/*.od*   # Libre Office: *.ods, *.odt, etc.

# Trusted keys to install from third party PPAs
tar -rvpf "$Filename" /etc/apt/trusted.gpg
tar -rvpf "$Filename" /etc/apt/trusted.gpg.d

# Sources for repositories - 1) Main single file - 2) directory of files
tar -rvpf "$Filename" /etc/apt/sources.list
tar -rvpf "$Filename" /etc/apt/sources.list.d

# find all $HOME/.config files and add to .tar
find .* -maxdepth 0 -type f -exec tar -rvf "$Filename" {} +

# Nautilus custom scripts
tar -rvpf "$Filename" .local/share/nautilus/scripts

# /etc/udev rules
tar -rvpf "$Filename" /etc/udev/rules.d

# /etc/rc.local
tar -rvpf "$Filename" /etc/rc.local

# /etc/X11/xorg.conf.d
tar -rvpf "$Filename" /etc/X11/xorg.conf.d

# /mnt/e - shared WSL + Linux
tar -rvpf "$Filename" /mnt/e/bin
tar -rvpf "$Filename" /mnt/e/Documents

# ~/eyesome - Development version
tar -rvpf "$Filename" eyesome

# ~/gmail - Python and Bash scripts but NOT huge data files
tar -rvpf "$Filename" gmail/*.py
tar -rvpf "$Filename" gmail/*.sh
tar -rvpf "$Filename" gmail/go
tar -rvpf "$Filename" gmail/BackupSets
tar -rvpf "$Filename" gmail/BackupDays

echo "Complete file list with sizes..."
tar -tvf "$Filename" > BackupLog    # list filenames and sizes
chmod a+w BackupLog                 # give user delete access

echo "Compressing with gzip..."
gzip "$Filename"
Filename="$Filename.gz"

echo "Emailing: $EmailAddr"

# From: https://internetlifeforum.com/gmail/2251-gmail-some-file-types-blocked-fix-how-go-around/
# cat archive.tar.gz | base64 > file
# then i sent the file via email:
# echo "Base64 encoded file" | mutt -a file -s subject -- mymail@gmail.com
# then mail was delivered properly! Then when one need to get readable archive 
# again, he need to decode it by base64. In my case i do it via linux command line:
# cat file | base64 -d > decodedarchive.tar.gz

Filename64="$Filename.64"
cat "$Filename" | base64 > "$Filename64"
mail -a "$Filename64" -s "$Filename64" "$EmailAddr" < BackupLog

ls -la "$Filename" "$Filename64"
rm     "$Filename" "$Filename64"

exit 0
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.