zoukankan      html  css  js  c++  java
  • Linux28:备份

    备份

    CentOS7以前的备份dump和restore

    要把重要文件备份,如/root/目录、/home/目录、/var/spool/mail/目录、/etc/目录、其他目录(如日志目录),对于特别重要的数据,还需要异地备份。

    常用服务也有一些需要备份的文件,如日志文件、数据文件、配置文件等。

    备份有几种:

    1、完全备份,也就是需要的数据整体备份

    2、增量备份,先进行一个完全备份,然后将新产生的数据依次备份,如第4天将新产生的数据备份,第5天将新产生的数据备份。。

    3、差异备份,先进行一个完全备份,然后将总体差异的数据依次备份,如第4天将数据与备份数据对比,将差异数据备份,第5天将数据与备份数据对比,将差异数据备份。它不一定优于增量备份。

    备份可以用dump命令,但是这个命令默认是没有安装的。

    执行模式:dump [选项] 备份之后的文件名 原文件或目录

    -数字: 就是我们说的0-9十个备份级别,0代表完全备份,1代表增量备份。
    -f 文件名: 指定备份之后的文件名
    -u: 备份成功之后,把备份时间记录在/etc/dumpdates文件
    -v: 显示备份过程中更多的输出信息
    -j: 调用bzlib库压缩备份文件,其实就是把备份文件压缩 为.bz2格式,默认压缩等级是2
    -W: 显示允许被dump的分区的备份等级及备份时间

    注意dump命令只有备份分区时可以采用增量备份,备份目录时只能采用完全备份。

    对分区备份:dump -0uj -f /root/boot.bak.bz2 /boot/

    再执行增量备份:dump -1uj -f /root/boot.bak1.bz2 /boot/

    恢复备份可以用restore命令:restore [模式选项] [选项]

    restore命令常用的模式有以下四种,这四个模式不能混用:
    -C:比较备份数据和实际数据的变化
    -i: 进入交互模式,手工选择需要恢复的文件。
    -t: 查看模式,用于查看备份文件中拥有哪些数据。
    -r: 还原模式,用于数据还原。
    选项有:
    -f: 指定备份文件的文件名

    比较备份与实际的区别时要指定备份文件名,根据error数来判断。

    增量备份恢复时要根据多个备份文件名恢复多次。恢复时最好新建目录然后进入,这样恢复的文件都在该目录下。

    XFS文件系统备份命令xfsdump

    xfsdump命令可以进行文件系统的完整备份(full backup),还可以进行累积备份(incremental backup),在使用该命令备份文件系统时要注意,该命令只能root执行,且只能备份已挂载的文件系统,且必须是XFS文件系统。

    将/boot挂载点处的文件系统备份到/srv/boot.dump:

    xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot

    其中-l后数字是指定等级,0代表完整备份;-L后跟该文件系统的简单说明;-M后填写媒体的简单说明;-f后接备份产生的备份文件名。

    查看备份文件系统的信息:xfsdump -I,如果之前用过xfsdump会产生备份文件系统的信息,其中有个关键信息是备份资料的level,如果是完整备份则level为0。

    如果经过一段时间后/boot文件系统发生了改变,此时就可以进行差异备份:

    xfsdump -l 1 -L boot_2 -M boot_2 -f /srv/boot.dump1 /boot

    注意生成的备份文件名要改变。

    XFS文件系统还原命令xfsrestore

    查看备份文件资料:xfsrestore -I,该命令可以找出所有用xfsdump备份的数据,这个命令的作用和xfsdump -I相同。

    要复原文件系统首先要指定该文件,要用上述命令查看文件的session label name,如果要复原/boot文件系统,备份文件名是/srv/boot.dump,session label name是boot_all,那么还原命令就是:

    xfsrestore -f /srv/boot.dump -L boot_all /boot

    如果boot文件下还有别的文件,此时复员后同名的文件会被覆盖,其他的文件会被保留,如果想解压出来完全是该文件系统,那么就直接指定一个新目录即可。

    如果要复原累积备份的资料,那么就在level0还原的基础上再还原level1:

    xfsrestore -f /srv/boot.dump1 /root

    用该命令还可以仅还原部分文件,如果备份文件是/srv/boot.dump,预计还原到/tmp/root3中,那么就可以执行命令:xfsrestore -f /srv/boot.dump -i /tmp/root3,在该命令状态下执行ls命令查看可以复原哪些文件,这些文件都是备份文件中的,然后使用add 文件名来一个个还原即可。

    备份命令dd

    之前用过dd命令来生成大文件:dd if=/dev/zero of=/sev/loopdev bs=1M count=512

    if是输入文件,意思是一个一直输出0的装置;of是输出文件,也就是即将生成的大文件路径;bs是block的大小;count是block的数量。

    执行完毕后就生成了一个512M的大文件。

    将一个文件备份到另一个位置:dd if=要备份的文件 of=新文件位置,这类似于cp。

    dd命令来备份是一个一个扇区去读写的,它会将没有用到的扇区也备份,故新备份文件和原来占用的磁盘空间完全相同,它不会因为文件系统的差异出现不同的响应,因此这个if和of可以跟文件系统,也可以跟设备名等等,这个命令也可以用来创造一个完全相同的磁盘分区,无需格式化,因为扇区内的MBR等都会被完整的复制。

    备份命令cpio

    cpio可以备份任何内容,包括装置设备文件,但是它必须配合find等命令来找到文件,将/boot下所有文件备份到/tmp/boot.cpio:

    find boot | cpio -ocvB > /tmp/boot.cpio,这里一般要进入根目录,然后指定boot文件时用相对路径,这样在以后还原时就不会覆盖boot中的内容了。

    还原:cpio -idvc < /tmp/boot.cpio

  • 相关阅读:
    mirco新建proto流程
    Ubuntu默认防火墙安装、启用、配置、端口、查看状态相关信息
    Rails核心组件
    Ruby中文乱码问题
    python str转dict
    SQLserver AwaysOn日志文件过大,处理办法
    MySQL的一些小细节
    mysql删除表中重复值
    可恶的自增长标识符
    reset slave all更彻底
  • 原文地址:https://www.cnblogs.com/yinyunmoyi/p/12539178.html
Copyright © 2011-2022 走看看