前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linux文件系统应用---系统数据备份和迁移(用户角度)

Linux文件系统应用---系统数据备份和迁移(用户角度)

作者头像
用户1170933
发布于 2018-01-05 09:38:33
发布于 2018-01-05 09:38:33
3.2K00
代码可运行
举报
文章被收录于专栏:python开发者python开发者
运行总次数:0
代码可运行

1   前言

首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决。

之前的文章对Linux的文件系统有过粗略的介绍,但是了解文件系统结构后,有什么用途呢?在本章节将围绕 "基于用户角度的Linux下的数据备份和迁移" 的场景,对Linux文件系统相关知识进行实地应用,产生生产力 。

在了解Linux文件系统之后,就可以 艺高人胆大 玩转Linux的文件目录了。

本文案例 --- "基于用户角度的Linux下的数据备份和迁移" 的使用场景描述如下:

发生在安装了新系统之后,需要将旧系统的数据进行复制或者是迁移,用户需要知道哪些数据是需要迁移的,哪些数据是需要备份的,以最小的代价实现文件的备份和迁移。

涉及的数据类型主要有:

  • 用户多媒体文档数据
  • 用户/系统 应用程序配置数据
  • 用户/系统 应用程序执行文件
  • 系统日志数据

2   FHS文件模型

在之前章节的文章里面提到过由 Linux Foundation 提出的对Linux各分支进行的文件目录的相关约定标准 : Linux的FHS(Filesystem Hierachy Standart)。

FHS把Linux的文件系统按照 "是否可变" 与 "是否可分享" 将所有目录大概分成四类:

shareable

unshareable

static

/usr /opt

/etc /boot

variable

/var/mail /var/spool/news

/var/run /var/lock

  • /usr
  • /opt
  • /etc
  • /boot

variable

  • /var/mail
  • /var/spool/news
  • /var/run
  • /var/lock

最大的基准分类框架就如上表所示。对于初识Linux的人来说,看到根目录下的一系列的文件肯定会感到困惑。所以完全有必要对FHS相关规定进行研究,这样有如下好处:

  • 在使用或者开发Linux文件系统时,能了解Linux的设计标准,并在使用过程中尽量遵守准则
  • 在接触并使用不同Linux分支时,即使Linux分支有万千,但也能万变不会离其宗,FHS不是“宗”之一
  • 在进行系统级别数据迁移时,可以进行科学的选择性的迁移(比如,重装系统后的用户配置数据迁移)
  • 在进行文件物理隔离存储时,可以根据“文件数据重要级别”或者“目录的潜在占用空间增长”进行合理物理分离存储或备份
  • 在性能优化时,根据读写的频率,对不同目录分配不同存储设备(如:机械硬盘或者SSD固态硬盘)
  • 在部署系统集群时,对于静态的可分享的目录,可以部署在某此只读存储器上,然后被需要的机器进行挂载,可以避免不必要的存储空间

3   用户数据

本文所指的用户数据是指,对比标准化的原生系统,由用户或者系统管理员在使用过程中产生的修改化配置或者安装的文件。

3.1   home

每新建一个用户,都会在此目录下面建立一个和用户名相同名称的目录,用于存储此用户产生的文件数据和用户个性化配置数据。

通过命令行列出所有的用户目录文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
~  ls -a
.                      .gconf            .pip                       .Xauthority
..                     .Genymobile       .pki                       .xinputrc
.adobe                 .gimp-2.8         .profile                   .xmind
.android               .gitconfig        proxychains-ng             .xsession-errors
.AndroidStudio1.3      .gksu.lock        Public                     .xsession-errors.old
.bash_history          .gnome            .PyCharm40                 .zcompcache
.bash_logout           .gnome2           pycharm-config.jar         .zcompdump
.bashrc                .gphoto           record-demo-plus-hold.mp4  .zcompdump-zheng-desktop-5.0.2
.cache                 .gradle           .sample-music              .zsh_history
.config                .gstreamer-0.10   shortcuts-images           .zshrc
.cr3                   .icons            .ssh                       .zshrc.pre-oh-my-zsh
.cxoffice              .java             .ssr                       .zsh-update
.dbus                  .kingsoft         Templates                  公共的
.dde-dock-applets.ini  KuaiPan           Tencent Files              模板
Desktop                .local            .themes                    视频
.dlockpid              .macromedia       .thumbnails                图片
.dmrc                  .mozilla          .thunderbird               文档
Documents              Music             .viminfo                   下载
Downloads              .oh-my-zsh        .viminfo.tmp               音乐
.esd_auth              .pam_environment  .wireshark                 桌面
.filezilla             Pictures          .wiznote

如上主要分为如下几类文件:

  • 用户通用文档文件 视频、图片、文档、下载、音乐、桌面
  • 应用程序配置文件 和桌面应用程序相关的程序的配置文件,以 . 点号开头,默认的隐藏文件,例如:
    • .adobe 是 pdf阅读器 adobe 应用程序的配置文件目录
    • .filezilla 是FTP客户端程序 filezilla 配置文件目录
    • 其它。。。
  • 用户环境变量配置文件
    • .profile 对应用户登录的时候,会加载的环境变量
    • .bashrc 每次使用当前用户开启 bash shell 的时候要执行的脚本

在用户数据迁移的时候,很关心的是应用程序的配置信息,关于用户应用程序配置文件的目录有两个地方:

  • /home/xxx 目录下的以点号开头的隐藏文件
  • /home/xxx/.config 目录下的文件

用户目录下的隐藏配置文件,前端已经介绍,在 .config 目录下面还有一些:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.config  cd /home/zheng/.config
➜  .config  ls -a
.           deepin_monitors.json    eog             htop               Pencil          Trolltech.conf
..          deepin-movie            fcitx           ipython            pulse           ubuntukylin
autostart   deepin-software-center  fcitx-qimpanel  kingsoft           QtProject.conf  user-dirs.dirs
bleachbit   deepin-terminal         geany           Kingsoft           ReText project  user-dirs.locale
calibre     deepin-ui               gedit           launcher           robomongo       yelp
chromium    desktop                 Genymobile      liteide            shutdown        youdao-dict
compiz-1    dock                    git             matplotlib         SogouPY         zone
dconf       Dolezel                 google-chrome   menus              SogouPY.users
dde-daemon  dra                     gtk-2.0         nautilus           sogou-qimpanel
deepin      DUI                     gtk-3.0         not_first_run_dde  sublime-text-2

用户所安装的主要的桌面应用程序的配置文件都在此处,例如:

  • kingsoft 金山办公套件配置文件
  • google-chrome 谷歌Chrome浏览器的用户配置及用户数据存储目录
  • robomongo mongodb数据库的客户端操作软件

说了这么多,这些配置文件具体有什么作用呢?举两个最简单的例子:

  • FTP客户端软件 filezilla
  • mongodb数据库客户端软件 robomongo

如果做系统管理员,必然会少不了使用相应的客户端软件来管理多个服务器( 文件服务器 或者 数据库服务器 ),在用户使用Linux Desktop的过程中,有些客户端软件会不断的积累应用程序配置文件,例如:

FTP客户端配置数据:

Mongodb客户端配置数据:

如果将上述提到的配置目录复制到新的机器下面,再打开相应的客户端软件的时候,这些配置信息都会跟随着迁移过去(其实本质上是里面的配置文本数据迁移过去了,此处为了简便,干脆整个目录一起迁移过去了)

3.2   etc

关于etc目录的全称,比较公认的说法是 Editable Text Config :可编辑的文本配置文件。

里面主要存放系统运行时所用到的一些文本配置文件。例如:除去用户密码这些信息外,基本上所有的和服务器应用程序相关的配置文件都存放在此处。关于此目录下具体的文件的意义,此处也不再赘述,在进行迁移和备份的时候,需要择取所需要的配置文件进行迁移备份即可。

如果是Linux服务器系统管理员,打交道最多的目录应该就是 etc 目录了,搭建各种服务器必然要处理的配置目录。

3.3   opt

通过命令行,查看此目录下的文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/opt  ls -a
.  ..  cxoffice  deepin-boot-maker  google  kingsoft  Point  ubuntukylin

此目录是部分应用程序的安装目录,一般情况是指通过 deb/rpm 文件或者是 make 的方式安装的时候,应用程序的目录会放在此处。

例如:

  • google/chrome chrome浏览器安装目录
  • kingsoft/wps-office 金山办公套件应用程序安装目录

这些应用程序都通过 deb 包安装的。

3.4   var

var目录主要存放一些经常变化的数据,例如:

  • mail 邮件数据
  • log 系统应用程序或者用户应用程序的日志,主要是文本文件。

这一块是随着系统不断运行的过程中会不断变化的。这一块的数据不是系统运行所必须的,但是对于系统管理员排查应用程序运行中的状态值很有帮助。

3.5   usr

usr的全称是 Unix Software Resource ,专门用来存放Unix系统的安装软件,在/opt目录不同的是,此目录一般存放的是通过 命令行安装的应用程序,例如,在ubuntu下面一般存放的是通过 apt-get install 安装的应用程序。

此目录下的主要文件目录如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr  ls -a
.  ..  bin  games  include  lib  local  sbin  share  src

基本上,只要将此目录迁移到新系统中,旧系统中通过 apt-get install 安装的应用程序也会迁移过去了。

4   文件迁移命令

使用rsync命令可以实现文件的同步迁移。

使用 man rsync 命令可以查看rsync的具体用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NAME
   rsync - a fast, versatile, remote (and local) file-copying tool

SYNOPSIS
       Local:  rsync [OPTION...] SRC... [DEST]

       Access via remote shell:
         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

       Access via rsync daemon:
         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
               rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

rsync 是一种极其快速而且万能的复制工具,主要功能如下:

  • 本地A目录往B目录同步复制文件(local copy
  • 本地A目录往远程RB目录同步复制push文件(remote push )
  • 远程RC目录往本地A目录同步复制pull文件(remote pull )

主要的 OPTION 参数可以通过 man rsync 命令查看

在本文中向新的系统做数据迁移时主要用到的是归档功能,相应的命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rsync -avzP src_dir dest_dir
  • a archive 称为归档模式,执行以下操作
    • 递归模式
    • 保留符号链接
    • 保留权限
    • 保留时间标记
    • 保留用户名及组名
  • v verbose 输入命令执行的中间过程
  • z compress 对同步中的文件进行压缩传送(相当以耗费CPU计算资源来节省传送的IO成本)
  • P progress 传送过程中的详细进度百分比

一般情况下,只需要使用 rsync 命令,将用户所需要迁移的数据进行相应的目录同步拷贝即可。

5   小结和展望

Linux系统下面没有Windows系统下所谓的注册表。可以将Linux系统理解为一个“纯绿色”的软件安装系统。至于为何有些程序可以直接(不需要指定路径)通过命令行的方式启动,有些则不能,这个和“注册表”无关,只是因为此应用程序如果采用标准安装方式,系统会在环境变量PATH 目录下面生成一个软链接而已。

通过Linux的文件迁移实验,可以清楚了解Linux文件系统中的各种文件是如何各司其责,并存放在相应的目录下的,然后就不会产生“因为不了解,所以害怕”的为难情绪了。

关于迁移到新系统后,应用程序如何迁移,本文提供的是直接文件级别的复制,还有一种自动化的方法就是基于命令行的批处理文件的执行安装,如果有比较快速的网络,推荐执行命令行自动化安装(后面会奉上文章)。

作者:

Harmo哈莫

作者介绍:

https://zhengwh.github.io

Email:

dreamzsm@gmail.com

QQ:

1295351490

时间:

2015-10-02

版权说明:

未经许可,严禁用于商业目的的非法传播

联系或打赏:

http://zhengwh.github.io/contact-donate.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-10-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Rsync数据备份工具
rsync运行架构: C/S Client/Server B/S Browser/Server
Alone-林
2022/09/28
1.1K0
Rsync数据备份工具
利用Rsync同步备份服务器数据
转载请备注出处:[狂码一生 ] http://www.sindsun.com/article-details-117.html
Sindsun
2019/12/11
2.7K0
第二章·Rsync 备份服务实战
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
4720
第二章·Rsync 备份服务实战
Linux系统rsync数据同步服务介绍
rsync是一种开源、快速的、多功能的、可以实现全量、增量的本地或远程数据同步备份工具,它适用于多种操作系统平台
民工哥
2020/09/16
1K0
Linux rsync命令使用指南
rsync 命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。rsync 使用所谓的 “rsync算法” 来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。rsync 是一个功能非常强大的工具,其命令也有很多功能特色选项。
smartsi
2019/08/07
1.5K0
Linux Rsync备份服务介绍及部署守护进程模式
rsync介绍 rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份工具 在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH提供文件。SSH模式下,rsync客户端运行程序必须同时在本地和远程机器上安装。 全量与增量 全量:将全部数据进行传输覆盖 增量:只传输差异部分的数据 rsync通过独特的“quick check”算法,实现增量数据传输 rsync的功能 类似与cp命令       
863987322
2018/01/24
2K0
详解linux中rsync的妙用[通俗易懂]
Rsync是一款开源的、快速的、多功能的、可实现全量及增长的本地或远程 数据同步备份的优秀工具。 增量备份:只同步变化的数据细腻些,主要利用了quick check算法实现 同步原理: 1)建立好网络连接 2)先进行数据信息对比 3)只将变化的数据进行增量备份
全栈程序员站长
2022/11/04
1.3K0
CentOS 7部署rsync备份服务器
1.1rsync(官方地址    http://wwww.samba.org/ftp/rsync/rsync.html)
星哥玩云
2022/07/20
1.1K0
基于rsync+inotify实现数据实时同步传输
前言 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点, 通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之 rsync+inotify便应运而生。本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输。 rsync相关介绍 rsync(remote sync)是一款快速增量备份工具(远程同步),支持本地复制,或者与其他SSH(安全传输)、rsync主机同步。
小小科
2018/05/02
1.5K0
基于rsync+inotify实现数据实时同步传输
Rsync服务简介部署使用及原理详解
Rsync简介 什么是rsync? Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rstync软件适用于unix/linux/windows等多种操作
iginkgo18
2020/09/27
2.3K0
Rsync 服务部署与参数详解
rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。
踏歌行
2020/10/15
1.9K0
Rsync 服务部署与参数详解
rsync 守护进程及实时同步
目录 rsync 守护进程及实时同步 rsync简介 rsync特性 rsync应用场景 cp命令 scp命令 rsync的传输方式 rsync的传输模式 rsync实际使用 rsync命令 案例 rsync守护进程模式 服务端 客户端 rsync实时同步传输 rsync 守护进程及实时同步 rsync简介 rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的s
HammerZe
2022/03/25
1.3K0
rsync 守护进程及实时同步
备份数据的重要性以及rsync的基本使用
主机角色 外网IP(NAT) 内网IP(LAN) 主机名称
码农编程进阶笔记
2021/07/20
4340
备份数据的重要性以及rsync的基本使用
rsync 服务部署详解
本文介绍了如何使用Rsync进行文件同步,并基于CentOS 7服务器进行了实例演示。首先介绍了Rsync的命令行参数和配置文件选项,然后通过配置文件指定了同步目录。接着,演示了如何通过Rsync进行增量备份和排除备份目录。最后,总结了Rsync的权限配置问题和常见错误。
惨绿少年
2017/12/27
2.2K0
rsync 服务部署详解
Linux中使用rsync数据备份工具和实例
对于运维不得不得做的就是备份,增量备份与全量备份,通过rsync工具可以快速做到远程备份。
星哥玩云
2022/05/23
1.5K0
Rsync 数据同步工具
利用 rsync 结合 inotify 或sersync 的功能做实时数据同步,根据存储服务器上目录的变化,把变化的数据通过inotify或sersync结合rsync命令,同步到备份服务器,还可以通过drbd方案以及双写的方案实现双机数据同步。
为为为什么
2022/08/06
3.1K0
linux基础命令介绍七:网络传输与安全
wget是一个非交互的下载器,支持HTTP, HTTPS和FTP协议,也可以使用代理。所谓'非交互'意思是说,可以在一个系统中启动一个wget下载任务,然后退出系统,wget会在完成下载(或出现异常)之后才退出,不需要用户参与。
用户5030870
2019/04/10
1.8K0
linux基础命令介绍七:网络传输与安全
AIX环境下文件远程传输复制工具--rsync安装测试
  rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
loong576
2019/10/28
2.4K0
AIX环境下文件远程传输复制工具--rsync安装测试
rsync服务的三种模式测试[通俗易懂]
Rsync是一款开源的、快速的、多功能的、可实现全量及增量(全量备份是指全部备份,增量备份是在上一次备份的基础上只备份更新的内容)的本地货远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。
全栈程序员站长
2022/11/08
2.4K0
rsync服务的三种模式测试[通俗易懂]
Linux文件系统目录结构详解
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识。
全栈程序员站长
2022/08/27
3K0
Linux文件系统目录结构详解
相关推荐
Rsync数据备份工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验