Linux / Ubuntu 备份数据

news/2024/9/24 18:53:27/

Linux / Ubuntu 备份数据

  • 需要备份的文件
  • tar 工具
    • 备份/打包过程
    • 恢复/解包过程
  • 流程自动化
      • start_backup.sh
      • server_backup.sh

同步发布在个人笔记Linux / Ubuntu 备份数据

需要备份的文件

对于我们的 linux 服务器(当然也适用于桌面端),时常进行一次系统备份是十分有益的,类似于快照功能,可以让我们的数据与系统免于意外的发生,出了问题进行恢复即可。那么我们应该用什么工具来备份呢?又要备份些什么呢?

  • 工具
    和 Windows 平台不同,linux 备份不需要进入引导系统,直接在本系统运行时就可以。工具就使用几乎每个 linux 系统都自带的 tar 工具。
  • 目录
    最好的目标当然是全盘备份,这种备份可以用 dd 命令,但是这需要另一块硬盘或分区,不符合我们今天的情况。使用 tar 工具时,推荐备份
    • 根目录 /
      这是系统所在,建议排除 /proc /lost+found /mnt /sys/media /dev可以根据情况选择是否要备份;
    • /home
      如果 /home 分区是单独一盘的话,建议单独备份。

tar 工具

Linux tar(英文全拼:tape archive )命令用于备份文件。
tar 用于创建和解压归档文件的命令行工具,可以用来将多个文件和目录组合成一个单一的归档文件,也可以用来解压已经存在的归档文件。
今天会用到的相关参数是:

参数全称意义
-ccreat创建打包文件
-Cdictionary在指定路径解包
-xextract / get提取打包文件
-vverbose输出详细的文件列表,使用-vv指令,可以输出更加详细的文件属性,包括时间、大小、所有者、权限等。
-Pabsolute-paths使用绝对路径(tar 默认使用相对路径)
-ppreserve-permissions / same-permissions保留文件的权限
-zgzip / ungzip使用gzip工具进行压缩或者解压缩
-ffile指定打包文件的文件名
–excludeexclude排除文件或文件夹(文件夹后不可有“/”)

备份/打包过程

我是在一个位置专门新建了一个路径用来保存备份文件,你也可以在任意位置,但是注意,如果备份文件在你要备份的文件路径中,要把备份文件排除在备份路径之外。

  • 举例:如果要备份 / ,备份的结果文件在 /backup.tgz,那么就要排除掉这个文件。

首先获得 root 权限

sudo su

然后分别备份根目录和用户目录

sudo tar cvPpzf sys_backup.tgz --exclude=/home --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys /
sudo tar cvPpzf home_backup.tgz /home/user_name

这样就在当前文件夹收获两个备份文件:sys_backup.tgz、home_backup.tgz

恢复/解包过程

当有数据丢失时,如果还能进系统,那就直接在系统里恢复,如果已经不能进系统了那就用 U 盘启动进系统修复就好。

sudo su

然后分别恢复两个分区

sudo tar xvPpzf sys_backup.tgz -C /
# 创建那些没备份的文件夹
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
mkdir /homesudo tar xvPpzf home_backup.tgz -C /home/user_name

流程自动化

最终当然是想要实现自动化的备份呀,那我们就在用来保存备份文件的文件夹,新建两个 shell 脚本

  • start_backup.sh
    这是启动备份脚本的脚本,主要任务是处理 log 文件并启动 server_backup.sh。
  • server_backup.sh
    这是备份脚本,主要是保存上一次备份的文件,并进行新一次的备份。使用 nohup 命令,使得任务在后台运行,且把输入记录到 nohup.out。

start_backup.sh

#!/bin/bashdateif [ -f "nohup.out" ];thenmv nohup.out nohup.preecho "找到上次记录 nohup.out ,并保留为 nohup.pre。"
elseecho "未找到上次记录!"
finohup bash server_backup.sh &

server_backup.sh

#!/bin/bash
echo "####################################"
date
echo "####################################"
echo ""
echo ""if [ -f "home_backup.tgz" ];thenrm home_backup.tgz.bakmv home_backup.tgz home_backup.tgz.bakecho "**********************************************"echo "保留上次 /home 备份文件为 home_backup.tgz.bak。"
elseecho "**********************************************"echo "未找到上次 /home 分区备份文件!"
fiecho "Starting Backup /home ......"
echo ""tar cvPpzf home_backup.tgz /home/user_name
echo "成功备份 /home 分区!"
echo ""
echo ""
echo ""if [ -f "sys_backup.tgz" ];thenrm sys_backup.tgz.bakmv sys_backup.tgz sys_backup.tgz.bakecho "**********************************************"echo "保留上次 / 备份文件为 sys_backup.tgz.bak。"
elseecho "**********************************************"echo "未找到上次 / 分区备份文件!"
fiecho "Starting Backup / ......"
echo ""
tar cvPpzf sys_backup.tgz --exclude=/home --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys /
echo "成功备份 / 分区!"
echo ""

备份时,使用命令:

sudo bash start_backup.sh

也可以把这个命令设定为定时任务。
由于需要自主输入 sudo 密码,就需要使用管道以及 sudo -S

参数全称意义
-Sstdin从标准输入读取密码
自动运行的命令为:
cd your_path
echo “your_password” | sudo -S bash start_backup.sh

http://www.ppmy.cn/news/1451284.html

相关文章

LeetCode 131 —— 分割回文串

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 首先,按照 LeetCode 5——最长回文子串 中的思路,我们先求出 d p dp dp,这样我们就知道了所有的子串是否是回文子串。 然后,我们进行一个 dfs 搜索,起…

(汇总)vue中在不同页面之间-4种传递参数的方式

Vue项目页面间传递参数和参数存储有很多种,常见的: (参考链接:www.qinglite.cn/doc/4603647… url里加参数,比如:/find?idxxx,或/find/xxx,适合少量数据,优点是刷新页面…

企业计算机服务器中了lockbit勒索病毒如何处理,lockbit勒索病毒解密流程建议

在虚拟的网络世界里,人们利用网络获取信息的方式有很多,网络为众多企业提供了极大便利性,也大大提高了企业生产运营效率,方便企业开展各项工作业务。但随着网络技术的不断发展与应用,越来越多的企业开始关注企业网络数…

SMB 协议详解之-TreeID原理和SMB数据包分析技巧

在前面分析SMB协议数据包的过程中,这里,可以看到在SMB协议中存在很多的ID,即Unique Identifiers。那么这些ID表示什么含义?在实际分析数据包的过程中如何根据这些ID进行过滤分析?本文将介绍SMB/SMB2中的tree id ,并介绍如何通过tree id 快速的分析SMB数据包中各种命令交互…

本地基于知识库的大模型的使用教程

本地基于知识库的大模型的使用教程 启动 双击 大模型启动.bat文件,内容如下: cmd /k "cd /d G:\Anaconda3\Scripts && activate.bat && cd /d D:\docdb_llm && conda activate python3.11 && python startup.py…

如何解决Go中uint类型溢出问题

如何解决Go中uint类型溢出问题 Golong的uint类型溢出问题通常会发生在大量的运算中,特别是涉及到大量循环和大数运算中。当uint类型的值超过其最大值时,会发生溢出,从最小值开始循环,一般有如下几种解决办法: 1. 使用…

wordpress外贸独立站建站10要10不要

创建一个成功的WordPress外贸独立站需要注意很多因素。以下是zhanyes根据多年建站经验总结的wordpress外贸独立站建站的10个建议和10个避免的事项,以帮助您建立一个高质量的外贸网站: 10个要: 1. 要选择合适的域名:确保您的域名…

感应开关盖垃圾桶项目(二)

单片机中断 之前我们采用软件的方法实现,对爆表的次数进行统计,以达到我们的延时要求。我们也可以采取中断的方法,让硬件直接实现中断。 观察中断结构图可以发现只有当EA闭合的时候,才会接受中断信号,之后可以按照我…