备份中要包括哪些文件夹?


28

我是Ubuntu的新手,想创建一个备份。我真的不确定要包括哪些文件和文件夹,因此如果我还原系统,它将保持现在的状态。我似乎在任何地方都找不到很好的细节。希望有人可以帮助我。是否可以备份现在的所有内容,所以在系统还原的情况下,我不必重新安装程序和设置吗?


是的,我也想知道重要文件是什么,而不必备份整个驱动器。Crontabs(根和用户),exportfs等
Sridhar Sarnobat

Answers:


25

我的备份集当前包含

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

请注意,这是用于服务器的,因此备份/ etc之类的内容会保存我的服务的所有配置,我的Web服务器位于/ srv中(尽管如果它们位于/ var / www中,它们仍将位于此备份集中) ,我在/ usr / local等中设置了各种脚本和设置。备份/ home而不是/ home / myusername是为了保留所有用户。如果您只想保留用户数据,则只需要主目录。


为什么要包含/ root?
Mohammed Joraid'7

2
这是根用户的主目录,我在其中保留了一些sysadmin脚本,用于备份等。尽管我已将其中的大多数移至了/usr/local/sbin/
thomasrutter

是否需要.cache在每个用户的主目录(~/.cache)中包含该文件夹,或者我们也可以忽略吗?它可以是成千上万的文件和数千兆字节的数据。我的理解是,如果我们不包含它,那仅意味着应用程序下次运行时必须重新生成临时的,缓存的文件,这会增加运行时间和启动时间,但无害,对吗?
加布里埃尔·斯台普斯

1
排除~/.cache我的声音。我不会自己排除它,但是如果您想减少数据传输/同步时间,那可以选择。
thomasrutter

1
@GabrielStaples我不使用/opt,但如果你使用它,那么你可以将其包含在您的备份。 /opt往往会因发行版本身而未被使用,而是由用户自己使用,但是提供Linux系统并安装了第三方应用程序的应用程序供应商可能会使用,/opt或者如果您开发自己的软件,则可以使用它来/opt代替/usr/local
thomasrutter

10

您需要备份的内容取决于您的特定系统*。

因此,这需要您花点时间进行整理。搞清楚什么开始并不需要进行备份。首先查看您的根目录,然后向后工作。

例如,cd /; ls -F给我:

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/mnt是挂载点,因此不需要备份。

/dev/lost+found/proc/run/sys/tmpGET汽车在重启时重新创建。[我猜这些链接:/initrd.img@,,/initrd.img.old@/ /vmlinuz@vmlinuz.old@在重新启动ubuntu时重新创建(我不确定是哪个)。

在我的系统上/root是空的(用于sudo -s以root用户身份打开外壳以查看它... exit在检查之后,请当心/root。)

/snap也为空。也许这是一个挂载点。

/var包含可变数据,例如系统日志文件,邮件和打印机假脱机目录以及临时和临时文件。”现在,我将其备份,除了/ var / log。参考:http : //www.tldp.org/LDP/Linux- Filesystem-Hierarchy / html / var.html

/bin/boot/lib/lib64,和/sbin可能会得到通过的Ubuntu重新安装,除非你正在做系统开发工作,或者类似的东西重新加载。您可以备份这些文件,也可以依赖全新安装来恢复它们。

/home应该在它自己的备份中。有时候您只想还原/home

你已经在你的系统所做的叶子之外的变化/etc/opt/srv/usr你将要还备份共同或单独。

以下几页可能有助于您了解这些目录:

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


一个相关的思路是: 假设您刚刚安装了新的Ubuntu。您需要备份什么?答:没有。您尚未进行任何更改,因此只需重新安装Ubuntu。它恢复/ bin,/ etc,/ root,/ usr等。

因此,您可能想要备份/ bin的唯一原因是因为您已对其进行更改或添加。因此,备份的一部分是了解在何处以及何时创建和修改它。只知道我们其他人也为此感到挣扎。


*****而且,尽管您没有要求,但您可以制作完整的磁盘或分区映像。这些备份和还原会花费大量时间,并且在进行此工作时可能会使系统瘫痪。这就是我过去使用Acronis备份Windows系统的方式。他们为您提供的一件事是分区图和非Linux分区中的映像。现在,在重新组织分区之前以及在测试备份还原功能之前,请先进行这些操作。


(对于如何使它变得更好,我很乐于接受建议。)


当您专注于配置并且不需要二进制文件时,这很棒,就像您说的那样可以再次安装它们,并且与重新安装相比,它要轻得多,导出和重新安装askubuntu.com/a/55906/104223
CTS_AE

5

如果我重新安装桌面系统,我将进行备份

  • /etc
  • /var,我懒得排除一些子文件夹
  • /opt

/home是在一个单独的分区上,每天都有一个备份。

重新安装后,我从备份中还原了我真正需要的部分。

使用此策略,我所有的配置,本地邮件和crontab配置都是安全的,我只需要重新安装所需的应用程序即可。

我的个人脚本保存在主文件夹中(每天备份,还记得吗?),因此我不使用/usr/local


1
如果我备份root就是全部,那会起作用吗?:./
暂停时间

那就像是我现在正在使用的克隆。
暂停

什么是/opt我们需要什么?即:为什么要备份?
加布里埃尔·斯台普斯

3

大多数人只是备份其主目录:/home/$USER/。如果要备份配置文件和设置,这些文件和设置将存储在主目录中以开头的文件夹和文件中。(点)。列出您使用的软件包(和PPA),如果需要,可以很容易地重新安装所有软件包。或者,使用此注释中描述的命令。

Deja Dup Backup是Ubuntu上的默认工具。其他选项包括命令行(rsync,rsnapshot,rdiff-backup等)。

最后,要将整个磁盘作为映像备份,请检出clonezilla


2
另外,除了答案psny所链接的内容之外,创建整个/ etc /目录的备份也不会有什么坏处,该目录存储了系统范围的设置。如果您在此处进行了一些更改,那么拥有一个存档来获取这些更改将很有帮助。
Marcin Kaminski

2
如果您有任何crontabs设置,那么/var/spool/cron也要备份。
伊恩·邓恩

3

让我们在这里收集文件列表。我把这篇文章设为“社区维基”。

当然,因人而异。我的主要用作Web服务器和NFS服务器。

mkdir $MY_BACKUP_FOLDER
cd $MY_BACKUP_FOLDER

crontabs

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

NFS股票

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

苏多

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

apache配置

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

autofs

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

fstab

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

主机

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

桑巴舞

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

USB设备(udev)规则

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

系统的

迁移

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

Ubuntu启动器(“开始菜单”).desktop文件,包括 您设置的任何自定义设置:

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

如果您重新安装ubuntu,则可以保留主目录


1

提醒您,如果您使用的是DejaDup(或其他真正的工具),还请排除任何云存储文件夹(可能在家中),例如Dropbox。如果您要为s3存储空间付费,则可能是个严重的错误。


0

使用Deja Dup备份。默认情况下提供。进入设置,仅将根文件夹(/)保留为“要包含的文件夹”,并/media在“要忽略的文件夹”中添加媒体文件夹()。

因此,除其他通常不受影响的驱动器外,如果系统损坏(罕见),将备份所有程序。


0

我备份了对我来说很重要的东西,这些东西可以粗略地定义为我的知识产权,以及为使Ubuntu完美工作(对我而言)而付出的努力。

我每天早上4:00或每台笔记本电脑从暂停状态恢复时都运行备份。它通过/etc/cron.daily脚本控制。

最好的备份类型是在发生火灾或计算机淹没的地方进行异地备份,因此我利用免费的15GB gmail.com帐户并向其发送压缩的每日备份。

几年后,我达到了15 GB的“免费”配额,因此编写了一个脚本,将备份回收到180天,78周,36个月和100个年度备份中。

这是对我重要的每日备份脚本

#!/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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.