Linux 备份要点

news2024/11/19 18:35:11

文章目录

  • Linux 备份要点
    • 确定备份的目录和文件
    • 备份的种类、频率与工具的选择
      • 完整备份
      • 增量备份
      • 差异备份
      • 镜像备份
    • 定期备份
    • 远程备份的脚本
      • 使用rsync上传备份数据

Linux 备份要点

在Linux系统中,备份数据是非常重要的,特别是在生产环境中。以下是Linux备份的一些要点:

确定备份的目录和文件

Linux备份的目录和文件取决于用户需要备份的数据内容和重要性,以下是一些常见的备份目录和文件:

  1. /etc:包含系统配置文件,例如网络配置、用户账户信息、服务配置等。

  2. /home:包含用户主目录,其中包括用户的文档、音乐、视频、图片等文件。

  3. /var:包含系统日志、缓存文件、邮件、数据库等数据。

  4. /usr/local:包含用户安装的软件和应用程序。

  5. /root:root用户的主目录,其中包括root用户的文档、配置文件等。

  6. /opt:包含第三方软件和应用程序。

  7. /srv:包含服务数据,例如Web服务器的网站数据、FTP服务器的文件等。

  8. /boot:包含系统启动文件和内核文件。

  9. /lib:包含系统共享库文件。

  10. /mnt:包含挂载的文件系统或设备。

    当然,以上仅是一些常见的备份目录和文件,具体需要备份哪些目录和文件取决于用户需要保护的数据内容和重要性。

虽然Linux备份可以备份大部分的目录和文件,但有些目录和文件不应该被备份或者无法被备份,以下是一些不能备份的目录和文件:

  1. /proc和/sys:这些目录包含的是虚拟文件系统,其中的文件不是实际的文件而是系统内核的相关信息,无法被备份。

  2. /dev:这个目录包含的是设备文件,备份这些文件没有意义,因为它们不包含实际的数据。

  3. /run:这个目录包含的是运行时的系统信息,例如进程ID和锁文件,这些信息在系统重启后会被重新创建,无需备份。

  4. /tmp:这个目录包含的是临时文件,通常不需要备份。

  5. 已经被加密的文件:如果文件已经被加密,备份也没有意义,因为备份文件也会被加密,无法还原。

  6. 大文件或者已损坏的文件:备份大文件需要消耗大量的时间和存储空间,因此不建议备份过大的文件。如果文件已经损坏,备份也没有意义,因为备份文件也会是损坏的。

总之,不能备份的目录和文件通常是没有实际意义或者无法还原的文件,备份时需要注意排除这些文件,以避免浪费时间和存储空间。

备份的种类、频率与工具的选择

备份分为多种类型,根据不同的备份需求和数据类型,需要选择不同的备份类型,以下是常见的备份类型、备份频率和备份工具的选择:

完整备份

完整备份(Full backup)是指备份系统中所有的文件和目录,包括系统文件和用户文件。完整备份的优点是备份文件包含了所有的数据,恢复时速度较快;缺点是备份文件较大,备份时间较长。完整备份通常用于定期备份,例如每周或每月备份一次。
以下是一个小案例,介绍如何使用tar工具进行完整备份:
假设我们有一个Web服务器,其中有一个/var/www/html目录,存储了网站的所有静态文件和动态脚本。我们需要对该目录进行完整备份,以防止数据丢失。

  1. 使用tar命令进行备份:
tar -czvf /backup/html_backup.tar.gz /var/www/html

# -c :表示创建新的备份文件
# -z :表示使用gzip压缩
# -v :表示显示详细信息
# -f :表示指定备份文件名和路径

该命令将/var/www/html目录下的所有文件和子目录打包成一个名为html_backup.tar.gz的压缩文件,并将其保存在/backup目录下。
2. 恢复备份文件:

tar -xzvf /backup/html_backup.tar.gz -C /

# -z :表示使用gzip解压缩
# -x :表示从备份文件中恢复数据
# -v :表示显示详细信息
# -f :表示指定备份文件名和路径
# -C :示指定解压缩路径

该命令将html_backup.tar.gz文件解压缩,并将其恢复到根目录/下。

增量备份

image-20230525175736846

增量备份(Incremental backup)是指备份系统中自上次备份后新增或修改过的文件和目录,与完整备份不同,增量备份只备份最新的变更,因此备份文件较小,备份时间也较短。增量备份通常用于频繁备份,例如每天备份一次。
以下是一个小案例,介绍如何使用rsync工具进行增量备份:
假设我们有一个文件夹/data,其中存储了重要的数据文件,我们需要每天备份一次/data目录,以防止数据丢失。

  1. 使用rsync命令进行增量备份:
rsync -avz --delete /data /backup/data_backup/

# -a :表示归档模式
# -v :示显示详细信息
# -z :表示使用gzip压缩传输
# --delete :表示删除目标目录中已经不存在的文件

该命令将/data目录的变更同步到/backup/data_backup目录中,第一次备份时,rsync会备份所有的文件,之后每天备份时,rsync只会备份新增或修改过的文件。备份完成后,目标目录/backup/data_backup中会保存最新的备份文件。
2. 恢复备份文件:
如果需要恢复备份文件,可以直接将备份文件复制回原始目录/data中,或者使用rsync命令进行恢复:

rsync -avz /backup/data_backup/ /data/

该命令将/backup/data_backup目录中的文件同步到/data目录中,-a表示归档模式,-v表示显示详细信息,-z表示使用gzip压缩传输。

差异备份

image-20230525180445426

差异备份是指备份系统中自上次备份以来新增或修改过的文件和目录,与上一次备份之间的差异。

差异备份只备份新增或修改的文件和目录,而不是备份整个文件系统。

以下是一个小案例,介绍如何使用xfsdump工具进行差异备份:
假设我们有一台服务器,其中存储了重要的数据文件,我们需要每天进行差异备份,以保留系统最新的变更,并避免备份文件过大。

  1. 安装xfsdump工具:
    xfsdump是一款用于备份和恢复XFS文件系统的工具,可以在大多数Linux发行版中找到。如果系统中没有安装该工具,可以使用以下命令进行安装:
yum install -y xfsdump
  1. 运行xfsdump进行备份:
    先进行完整备份
xfsdump -l 0 -L 'fullbackup' -M 'fullbackup' -f /backupdata/home.dump  /home
  • xfsdump:命令名称,表示使用xfsdump工具进行备份。
  • -l 0:备份级别为0,表示完全备份。
  • -L ‘fullbackup’:备份标签为’fullbackup’,用于标记备份文件。
  • -M ‘fullbackup’:备份模式为’fullbackup’,表示完全备份。
  • -f /backupdata/home.dump:备份结果保存到/backupdata/home.dump文件中。
  • /home:备份源路径,表示备份/home目录下的所有文件和子目录。
  1. 第一次进行差异备份
xfsdump -l 1 -L 'fullbackup-1' -M 'fullbackup-1' -f /backupdata/home.dump1  /home
  • xfsdump:命令名称,表示使用xfsdump工具进行备份。
  • -l 1:备份级别为1,表示增量备份。
  • -L ‘fullbackup-1’:备份标签为’fullbackup-1’,用于标记备份文件。
  • -M ‘fullbackup-1’:备份模式为’fullbackup-1’,表示差异备份。
  • -f /backupdata/home.dump1:备份结果保存到/backupdata/home.dump1文件中。
  • /home:备份源路径,表示备份/home目录下的所有文件和子目录。
  1. 恢复备份文件:

让/home整个恢复到原本的状态

xfsrestore -f /backupdata/home.dump -L  fullbackup /home

更多信息请查看这篇博客:XFS文件系统备份与还原

镜像备份

镜像备份是指将整个硬盘或分区的内容完整地复制到另一个硬盘或分区中,以实现数据的完全备份。镜像备份的优点是备份结果与原始数据完全相同,可以快速还原系统。但是,由于备份结果的大小与原始数据一致,因此备份时间较长,占用存储空间较大。
在Linux系统中,可以使用dd命令进行镜像备份。dd命令是一个强大的数据复制工具,可以将数据从一个文件或设备复制到另一个文件或设备中。
以下是一个使用dd命令进行镜像备份的例子:
假设我们要将/dev/sda磁盘的整个内容备份到/dev/sdb中:

dd if=/dev/sda of=/dev/sdb bs=4M conv=sync,noerror
  • sudo:使用管理员权限运行该命令;
  • if=/dev/sda:表示输入文件为/dev/sda,即备份源;
  • of=/dev/sdb:表示输出文件为/dev/sdb,即备份目标;
  • bs=4M:表示以4MB为单位进行数据块复制;
  • conv=sync,noerror:表示在出现读取错误时,使用同步模式继续复制,同时忽略读取错误。
    这条命令的作用是将/dev/sda整个磁盘的内容复制到/dev/sdb中,其中bs参数指定数据块大小为4MB,conv参数指定在出现读取错误时,使用同步模式继续复制,同时忽略读取错误。

定期备份

定期备份是指按照一定的时间间隔,定期对系统数据进行备份,以保证数据的安全性和可靠性。通过定期备份,可以避免因系统故障、病毒攻击等原因导致数据丢失或损坏的风险。在Linux系统中,可以使用cron定时任务来实现定期备份。
以下是一个使用cron定时任务实现每天定期备份的例子:

假设我们要在每天凌晨3点进行一次全盘备份,备份结果保存到/home/backup目录下:

  1. 创建备份脚本文件
    首先,我们需要创建一个备份脚本文件,例如/home/backup.sh,该脚本文件的内容如下:
#!/bin/bash
# 全盘备份
dd if=/dev/sda of=/home/backup/backup.img bs=4M conv=sync,noerror

该脚本文件的作用是将/dev/sda整个磁盘的内容备份到/home/backup/backup.img文件中,其中bs参数指定数据块大小为4MB,conv参数指定在出现读取错误时,使用同步模式继续复制,同时忽略读取错误。
2. 添加定时任务
接下来,我们需要使用cron定时任务来实现每天定期备份。可以使用以下命令打开cron编辑器:

sudo crontab -e

然后,在编辑器中添加以下行:

0 3 * * * /bin/bash /home/backup.sh

该行的含义是,在每天凌晨3点执行/home/backup.sh脚本文件进行备份。其中,0表示分钟数,3表示小时数,*表示任意日期,*表示任意月份,*表示任意星期几。最后,/bin/bash /home/backup.sh指定执行备份脚本文件。

远程备份的脚本

如果管理两台以上的Linux主机时,那么互相将对方的重要数据保存一份在自己的系统中也是个不错的想法。那么怎么保存?使用USB硬盘复制来吗?当然不是,你可以通过网络来处置。我们假设你已经有一台主机,这台主机的IP 是192.168.200.30 而且这台主机已经提供了 sshd这个网络服务了,接下里可以这样做。

使用rsync上传备份数据

要使用rsync你必须要在你的服务器上面获取某个账号使用权,并让该账号可以不用密码也登才行。

[root@server1 ~]# ssh-keygen
[root@server2 ~]# ssh-keygen 
[root@server2 ~]# ssh-copy-id  server1主机IP
[root@server1 ~]# ssh-copy-id  server2主机IP
# copy过程要输入对方主机的密码
# 当提示你可以使用 ssh 对面主机IP时即为配置成功

当你已经设置好了两个服务器可以不用密码都可以登录远程服务器,而同样的,你要让 /backup/weekly/ 整个备份到 /home/下面时,可以简单地这样做

[root@server2 ~]# vim /backup/rsync.sh 
#!/bin/bash
remotedir=/home
basedir=/backup/weekly
host=192.168.200.20
id=root

rsync -av -e ssh $basedir ${id}@${host}:${remotedir}

然后执行程序就可以远程备份了

[root@localhost ~]# sh /backuo/rsync.sh
sending incremental file list
weekly

sent 5,244,244 bytes  received 35 bytes  10,488,558.00 bytes/sec
total size is 5,242,880  speedup is 1.00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】向上调整建堆和向下调整建堆的天壤之别以及堆排序算法

💯 博客内容:【数据结构】向上调整建堆和向下调整建堆的天壤之别以及堆排序算法 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信&…

Hadoop HA(高可用)搭建

ZooKeeper配置 解压安装 添加ZK环境变量 分发文件 启动 安装配置 Hadoop 解压安装 修改hadoop-env.sh文件 修改Hadoop配置文件core-site.xml HDFS 配置文件hdfs-site.xml MapReduce 配置文件 mapred-site.xml YARN 配置文件yarn-site.xml 配置worekers 分发配…

Nginx配置文件

四.Nginx配置 1.位置 /usr/local/nginx/conf/nginx.conf2.内容 Nginx的主配置文件是nginx.conf,这个配置文件一共由三部分组成,分别为全局块、events块和http块。在http块中,又包含http全局块、多个server块。每个server块中,可…

基于3.0.0-cdh6.3.2版本编译Flink1.14.4

一、背景 异常描述 CDH-6.3.2环境下使用Flink-1.14.4的FlinkSQL的hive方言时出现如下异常 java.lang.Runtimelxception: java,lang.IllegalArgumentException: Unrecoonized Hadoop major version number: 3.0.0-cdh6.2.1 问题说明 开源社区hive 2.x的版本这种情况下是不支…

Java时间类(十一) -- Date类工具类 -- Java获取当天、本周、本月、本年 开始及结束时间

目录 1. 今天的日期如下: 2. DateUtils工具类的源代码: 3. 测试类 1. 今天的日期如下:

React Hooks useRef 源码解读+最佳实践

参考:https://juejin.cn/post/7027949526170206239 入口 下篇文章有入口源码详解,想看的可以跳转过去,这里就不放源码了,简单梳理一下流程吧 React Hooks useState 使用详解实现原理源码分析 流程 beginWork 判断组件类型&#x…

SpringCloud(26):系统自适应保护实现

Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可…

ACP(MaxCompute篇)-MaxCompute自定义函数开发

概述 数据映射关系 自定义函数 相关资料 【MaxCompute】实现自定义UDF、UDTF详解_maxcompute 自定义函数_beautiful_huang的博客-CSDN博客 UDF UDTF UDAF 函数发布 test11_123>add jar C:\Users\zhang\Desktop\相关电子书\test\target\test-1.jar -f; OK: Resource tes…

Linux 分布式版本控制系统git

目录 什么是git? 安装git 创建版本库 工作区和版本库、 向版本库中添加文件 版本回退 远程操作 什么是git?  Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 linux是一个开源软件,第一版本&am…

【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)

Maven介绍 由于Java的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以jar包的形式出现的,例如Spring,SpringMVC、MyBatis、数据库驱动,等等,都是以jar包的形式出现的&#xff0…

华为OD机试之完美走位(Java源码)

完美走位 题目描述 在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。 假设玩家每按动一次键盘,游戏任务会向某个方向移动一步,如果玩家在操作一定次数的键…

Eureka 心跳和服务续约源码探秘——图解、源码级解析

🍊 Java学习:社区快速通道 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年5月25日 🍊 点…

【SA8295P 源码分析】03 - SA8295P QNX Host 上电开机流程分析

【SA8295P 源码分析】03 - SA8295P QNX Host上电开机流程分析 一、阶段1 固件开机自检 (SM BIST):APPS PBL加载XBL后触发 INT_RESET进行Warm Reset二、阶段2 固件开机自检 (SM BIST):加载TZ,初始Hypervisor,启动QNX Kernel,加载并启动各子系统系列文章汇总见:《【SA8295P…

如何用前端技术打造自己的2048游戏

部分数据来源:ChatGPT 2048游戏规则 2048是一款数字益智类游戏,玩家需要通过合并数字方块来获得更高的分数。游戏的规则非常简单,只需要使用上下左右方向键移动数字方块,当两个相同数字方块碰撞时,会合并成一个数字方…

【KVM虚拟化】· KVM中的网络

目录 🍎虚拟机的网络模式 🍒网络配置文件 🍒virsh查看命令 🍎基于NAT的虚拟网络 🍎基于网桥的虚拟网络 🍎基于隔离的虚拟网络 🦐博客主页:大虾好吃吗的博客 🦐专栏地址&a…

全网最全的多模态实体识别论文列表-【原文+代码】

文章目录 写在前面的话【2017年】【2018年】【2019年】【2020年】【2021年】【2022年】【2023年】【写在最后的话】 写在前面的话 近期在梳理多模态NER相关的论文,因此,本篇文章主要是为大家整理了比较全面的聚焦于多模态实体识别任务的论文列表&#x…

Linux权限相关介绍

目录 前言 1.Linux操作系统下的两种用户 Linux权限管理 Linux文件访问对象分类 文件类型和访问权限 文件类型 基本权限 文件访问权限的相关设置方法 chmod chown chgrp umask掩码 目录权限 粘滞位 前言 权限指的就是我们对于某件事物所能够相关操作,而对于…

x86汇编语法基础(gnu格式)

一、寄存器 1.1 通用寄存器 一个x86-64的中央处理单元(CPU)包含一组16个存储64位值的通用寄存器。这些寄存器用来存储整数数据和指针。下图显示了这16个寄存器。它们的名字都以%r开头,不过后面还跟着不同命名规则的名字,这是由于…

macbook2023系统清理软件cleanmymac中文版

cleanmymac x 中文版基本都是大家首选Mac清理软件了。它集各种功能于一身,几乎满足用户所有的清理需求。它可以清理,优化,保养和监测您的电脑,确保您的Mac运行畅通无阻!支持一键快速清理Mac,快速检查并安全…

opencv_c++学习(二十二)

一、凸包检测 图中左侧为边缘检测的效果,中间为图像经过二值化的效果,右图为凸包检测效果。 convexHull(lnputArraypoints, OutputArray hull,bool clockwise false, bool returnPoints true)points:输入的2D点集。 hull:输出凸包的顶点。…