Linux 系统迁移中的 tar(bsdtar)备份陷阱与解决方案

(首发地址:学习日记 https://www.learndiary.com/2024/06/bsdtar-numeric-owner/)

朋友们,大家好!我是来自淘宝网学习日记小店的 learndiary,专注于 Linux 服务领域。今天,我想和大家分享一次我在进行 Linux 全系统迁移时所遇到的问题,以及如何解决这个问题的经历。视频演示:【Linux 系统迁移中的 bsdtar 备份陷阱与解决方案】 https://www.bilibili.com/video/BV14T421e7rB/

Linux 系统迁移中的 tar(bsdtar)备份陷阱与解决方案

几天前,我正在进行一个Linux系统的迁移项目,使用的正是我之前在日记“用 bsdtar 做 Linux 全系统迁移”https://www.learndiary.com/2024/03/migrate-linux-with-bsdtar/中提到的 bsdtar 工具。这次迁移的源系统是 CentOS 7.5,而在原系统上完成了系统压缩备份后,我选择了一个不同的环境——CentOS 7.8 的 LiveCD——来进行备份的恢复。这种不同环境下的恢复操作导致了一个与 /etc/ssh 目录下的文件相关的问题。

问题的核心在于,sshd 服务在恢复后无法启动,因为原本属于 ssh_keys 组的文件,在恢复过程中被错误地映射到了数字 992 的组,而这个数字在目的系统中并不存在对应的组名。结果,sshd 服务在启动时遇到了权限问题,导致失败。

那么,为什么会出现这样的问题呢?这与 bsdtar 或 tar 这类备份工具的一个关键参数 --numeric-owner 有关。当使用这个参数时,工具会始终采用数字用户和数字组来恢复文件,而不是依赖于字符名称。为了更好地理解这一点,我决定在虚拟机中进行实操演示。

在演示中,我首先在运行的 CentOS 7.9 系统上用 bsdtar 创建了一个 /etc/ssh 的备份,注意到了其中ssh_keys组的数字ID是999。创建备份的命令为“sudo bsdtar -cvf ssh_test.btar ssh”。

然后,用 CentOS 7.8 LiveCD 启动系统,这里作为对比,我使用了两个不同的方法来恢复这个备份:一个是默认的恢复方法,命令为“sudo bsdtar -xvf ssh_test.btar -C ssh_test”;另一个则加上了 --numeric-owner 参数,命令为“sudo bsdtar -xvf ssh_test.btar -C ssh_test2 --numeric-owner”。

结果表明,当不使用 --numeric-owner 时,恢复后的组名虽然在 CentOS 7.8 LiveCD 保持了 ssh_keys,但其数字 ID 在 LiveCD 系统和目的系统中被错误地改变为 992,导致了权限问题会使 sshd 服务无法启动。而使用 --numeric-owner 后,在 LiveCD 和目的系统中数字 ID 保持为 999,恢复的组名在目的系统中也正确地对应上了 ssh_keys,保证了 sshd 服务的正常启动。

总结来说,当我们使用 bsdtar 或 tar 进行系统迁移时,尤其是在不同环境间进行备份恢复的情况下,务必记得使用 --numeric-owner 参数。这将确保数字用户和组的准确恢复,避免因环境差异而引起的权限问题。希望我的经验分享能帮助大家在进行类似的迁移任务时少走弯路。

最后,如果我对这一机制的理解有任何不准确之处,欢迎大家指正。感谢大家的观看,我们下次分享再见!

参考网址:
Backup Your System with TAR:https://help.ubuntu.com/community/BackupYourSystem/TAR

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

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

相关文章

轻松驾驭视频节奏:灵活调整视频播放速度,让视频内容更出彩!

视频已经成为了我们生活中不可或缺的一部分。无论是观看电影、电视剧,还是浏览短视频、直播内容,我们都希望能够根据自己的喜好和需求来调整视频的播放速度,甚至精确控制每一秒的播放内容。那么,如何轻松实现这一愿望呢&#xff1…

go语言接口之http.Handler接口

package httptype Handler interface {ServeHTTP(w ResponseWriter, r *Request) }func ListenAndServe(address string, h Handler) error ListenAndServe函数需要一个例如“localhost:8000”的服务器地址,和一个所有请求都可以分 派的Handler接口实例。它会一直运…

Pytorch 实现简单的 线性回归 算法

Pytorch实现简单的线性回归算法 简单 tensor的运算 Pytorch涉及的基本数据类型是tensor(张量)和Autograd(自动微分变量) import torch x torch.rand(5, 3) #产生一个5*3的tensor,在 [0,1) 之间随机取值 y torch.o…

OJ刷题——2080.夹角有多大II和2082.找单词、2085.核反应堆

2080.夹角有多大II 题目描述 Problem - 2080 运行代码 #include <iostream> #include <math.h> using namespace std; int main() {int T;double x1, y1, x2, y2;double res;scanf_s("%d", &T);while (T--) {scanf_s("%lf%lf%lf%lf", &…

机器学习算法 —— 贝叶斯分类之模拟离散数据集

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 实战&#xff08;贝叶斯分类&#xff09;莺尾花数据模拟离散数据集库函数导入数据导入和分析模型训练和预测 总结 实战&#xff08;贝叶斯…

群体优化算法---水波优化算法介绍以及应用于聚类数据挖掘代码示例

介绍 水波优化算法&#xff08;Water Wave Optimization, WWO&#xff09;是一种新兴的群智能优化算法&#xff0c;灵感来自水波在自然环境中的传播和衰减现象。该算法模拟了水波在水面上传播和碰撞的行为&#xff0c;通过这些行为来寻找问题的最优解。WWO算法由三种主要的操作…

打工人的福利,NewspaceGpt使用新体验

使用地址&#xff1a;https://newspace.ai0.cn/ NewspaceGpt大体所有功能一览(​​newspace.ai0.cn​​) 使用体验与官网完全一致&#xff0c;可在第一时间体验到官网所有新功能。无需特殊上网。内置多个Plus账号&#xff0c;不用担心次数不够。支持所有GPTS功能:DALLE-3模型(…

CTFHUB-SQL注入-时间盲注

本题用到sqlmap工具&#xff0c;没有sqlmap工具点击&#x1f680;&#x1f680;&#x1f680;直达下载安装使用教程 理论简述 时间盲注概述 时间盲注是一种SQL注入技术的变种&#xff0c;它依赖于页面响应时间的不同来确定SQL注入攻击的成功与否。在某些情况下&#xff0c;攻…

攻防世界---misc---embarrass

1、下载附件是一个数据包 2、用wireshark分析 3、ctrlf查找字符 4、 flag{Good_b0y_W3ll_Done}

angular2网页前端执行流程

示例代码版本&#xff1a; http://192.168.102.9/jas-paas/cloudlink-front-framework/tree/045f4811da782c107eca72f9bdea39ebaa086a7d 命令行运行命令启动服务 在开发环境下&#xff0c;打开项目目录&#xff0c;运行命令npm start,这个命令会进入package.json文件中&#x…

cve_2014_3120-Elasticsearch-rce-vulfocus靶场

1.背景 来源&#xff1a;ElasticSearch&#xff08;CVE-2014-3120&#xff09;命令执行漏洞复现_mvel 漏洞-CSDN博客 参考&#xff1a;https://www.cnblogs.com/huangxiaosan/p/14398307.html 老版本ElasticSearch支持传入动态脚本&#xff08;MVEL&#xff09;来执行一些复…

Windows11上安装docker(WSL2后端)和使用docker安装MySQL和达梦数据库

Windows11上安装docker&#xff08;WSL2后端&#xff09;和使用docker安装MySQL和达梦数据库 1. 操作系统环境2. 首先安装wsl2.1 关于wsl2.2 安装wsl2.3 查看可用的wsl2.4 安装ubuntu-22.042.5 查看、启动ubuntu-22.04应用2.6 上面安装开了daili2.7 wsl的更多参考 3. 下载Docke…

Springboot 开发之任务调度框架(一)Quartz 简介

一、引言 常见的定时任务框架有 Quartz、elastic-job、xxl-job等等&#xff0c;本文主要介绍 Spirng Boot 集成 Quartz 定时任务框架。 二、Quartz 简介 Quartz 是一个功能强大且灵活的开源作业调度库&#xff0c;广泛用于 Java 应用中。它允许开发者创建复杂的调度任务&…

【Jenkins+K8s】持续集成与交付 (二十):K8s集群通过Deployment方式部署安装Jenkins

🟣【Jenkins+K8s】持续集成与交付 (二十):K8s集群通过Deployment方式部署安装Jenkins 一、 准备工作二、安装 Jenkins2.1 设置NFS共享目录2.2 创建名称空间2.3 创建持久化卷和声明2.4 创建sa账号2.5 对sa账号授权2.6 通过Deployment方式部署Jenkins2.7 查看Jenkins是否创建…

AdroitFisherman模块测试日志(2024/6/10)

测试内容 测试AdroitFisherman分发包中SHAUtil模块。 测试用具 Django5.0.3框架&#xff0c;AdroitFisherman0.0.31 项目结构 路由设置 总路由 from django.contrib import admin from django.urls import path,include from Base64Util import urls urlpatterns [path(ad…

SCRM的全面了解

一、什么是SCRM SCRM&#xff08;Social CRM&#xff0c;社会化客户关系管理&#xff09;&#xff0c;是以用户为中心&#xff0c;通过社交平台与用户建立联系&#xff0c;以内容、活动、客服、商城等服务吸引用户注意力&#xff0c;并不断与用户产生互动&#xff0c;实现用户…

【Oracle篇】rman时间点异机恢复:从RAC环境到单机测试环境的转移(第六篇,总共八篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

谷歌AI助力软件工程的进展及未来展望

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

OpenAI 宕机事件:GPT 停摆的影响与应对

引言 2024年6月4日&#xff0c;OpenAI 的 GPT 模型发生了一次全球性的宕机&#xff0c;持续时间长达8小时。此次宕机不仅影响了OpenAI自家的服务&#xff0c;还导致大量用户涌向竞争对手平台&#xff0c;如Claude和Gemini&#xff0c;结果也导致这些平台出现故障。这次事件的广…

lua网站开发中如何制作自定义模块

自定义模块是FastWeb框架的重要拓展功能&#xff0c;用来扩展和增强服务的能力。通过自定义模块&#xff0c;开发者可以轻松添加特定的功能和特性&#xff0c;使得网站开发更加灵活和高效。本文将演示如何添加自己的模块作为FastWeb的拓展&#xff0c;为框架的壮大与支持提供重…