Linux系统备份对一些关键的单点业务是非常重要的,下面将说说采用简单的工具进行备份,实用派。

一、rsync备份系统
rsync -PpavAHX 备份源目录 备份到位置
rsync -PpavAHX / /media/youxia/usb/backup_20141216 --exclude=/media/* --exclude=/sys/* --exclude=/proc/* --exclude=/mnt/* --exclude=/tmp/*

mkdir -p /drbd_data/linux_system_backup/
rsync -PpavAHX / /drbd_data/linux_system_backup/`date +%Y-%m-%d` --exclude=/media/* --exclude=/sys/* --exclude=/proc/* --exclude=/mnt/* --exclude=/tmp/*

这个脚本的基本形式来自于 rsync 的网站。其实只有一条命令:
rsync --force --ignore-errors --delete --delete-excluded --exclude-from=exclude_file --backup --backup-dir=`date +%Y-%m-%d` -av

关键的参数是:
    --backup: 在覆盖前备份文件
    --backup-dir=`date +%Y-%m-%d`: 为备份的文件建立一个备份目录,看上去就像: 2002-08-15
    -av: 存档(archive)模式和详细输出(verbose)模式。

恢复系统

rsync -Ppa 备份数据 还原位置
rsync -PpavAHX /drbd_data/linux_system_backup/ /

注意:
如原目录没有/则会在根下目录创建linux_system_backup,文件都在linux_system_backup下
rsync -PpavAHX /drbd_data/linux_system_backup /

即可恢复系统。

[root@testserver3 home]# su - hd
su: warning: cannot change directory to /home/hd: Permission denied
-bash: /sbin/consoletype: Permission denied
-bash: ulimit: open files: cannot modify limit: Operation not permitted
-bash: /home/hd/.bash_profile: Permission denied
-bash-4.1$ exit

ll -a /
发现/home权限编程了700了
修改下权限就好了
chmod 755 /home
chmod 755 /srv /share1 /selinux /mnt /media /logs/
chmod 755 /opt /sbin
chmod 777 /tmp/

二、dump备份/恢复系统

测试备份数据量
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda2      288G   32G  242G  12% /
执行了3个小时10多分钟,时间不短

yum -y install dump

[root@localhost~]# dump [选项] 备份之后的文件名 原文件或目录
选项说明:
-level:备份级别。(一共十个备份级别,具体格式为“-0”~“-9”:“-”和具体的级别数字之间没有空格。其中0就是完全备份;1就是第一次增量备份;2就是第二次增量备份。。。最多支持9次增量备份。)
-f 文件名:手工指定备份之后的文件名。
-u:备份成功之后,把备份时间记录在/etc/dumpdates文件中。
-v:显示备份过程中更多的输出信息。
-j:调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式。
-W:显示允许被dump的分区的备份等级及备份时间。

执行一次完全备份
------10:40开始--------

#dump -0uj -f /drbd_data/backup_dev_xvda2.bak.bz2 /
  DUMP: Date of this level 0 dump: Wed Dec 21 10:40:39 2016
  DUMP: Dumping /dev/xvda2 (/) to /drbd_data/backup_dev_xvda2.bak.bz2
  DUMP: Label: none
  DUMP: Writing 10 Kilobyte records
  DUMP: Compressing output at compression level 2 (bzlib)
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 32824326 blocks.
  DUMP: Volume 1 started with block 1 at: Wed Dec 21 10:40:41 2016
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: 2.25% done at 2459 kB/s, finished in 3:37
  DUMP: 4.29% done at 2348 kB/s, finished in 3:42
  DUMP: 6.34% done at 2310 kB/s, finished in 3:41
  DUMP: 9.09% done at 2486 kB/s, finished in 3:19
  DUMP: 12.45% done at 2725 kB/s, finished in 2:55
  DUMP: 15.70% done at 2863 kB/s, finished in 2:41
  DUMP: 18.92% done at 2956 kB/s, finished in 2:30
。。。
  DUMP: 97.96% done at 2896 kB/s, finished in 0:03
  DUMP: 99.89% done at 2876 kB/s, finished in 0:00
  DUMP: Closing /drbd_data/backup_dev_xvda2.bak.bz2
  DUMP: Volume 1 completed at: Wed Dec 21 13:53:33 2016
  DUMP: Volume 1 took 3:12:52
  DUMP: Volume 1 transfer rate: 1095 kB/s
  DUMP: Volume 1 33226150kB uncompressed, 12676645kB compressed, 2.622:1
  DUMP: 33226150 blocks (32447.41MB) on 1 volume(s)
  DUMP: finished in 11572 seconds, throughput 2871 kBytes/sec
  DUMP: Date of this level 0 dump: Wed Dec 21 10:40:39 2016
  DUMP: Date this dump completed:  Wed Dec 21 13:53:33 2016
  DUMP: Average transfer rate: 1095 kB/s
  DUMP: Wrote 33226150kB uncompressed, 12676645kB compressed, 2.622:1
  DUMP: DUMP IS DONE

--------13:53结束----------

增量备份
dump -1uj -f /drbd_data/backup_dev_xvda2.bak_add.bz2 /

注意:如果是备份目录,则只能使用0级别进行完全备份,而不再支持增量备份。也就是说,dump只有在备份分区的时候才可以执行增量备份,否则系统将会报错。

恢复命令:restore命令
[root@localhost~]# restore [模式选项] [选项]
模式选项说明:restore命令常用的模式有以下四种,且在使用的时候这四个模式只能择其一,不能混用。
-C:比较备份数据和实际数据的变化。
-i:进入交互模式,手工选择需要恢复的文件。
-t:查看模式,用于查看备份文件中拥有哪些数据。
-r:还原模式,用于数据还原。

选项说明:
-f:指定备份文件的文件名

比较变化
restore -C -f /drbd_data/backup_dev_xvda2.bak.bz2

查看模式
restore -t -f /drbd_data/backup_dev_xvda2.bak.bz2

还原模式
恢复完全备份
restore -r -f /drbd_data/backup_dev_xvda2.bak.bz2

恢复增量备份数据
restore -r -f /drbd_data/backup_dev_xvda2.bak_add.bz2

进入交互模式
restore -i -f /drbd_data/backup_dev_xvda2.bak.bz2
说明:
通过?来查看可以使用的命令,ls是列出备份文件的内容
通过add来选择要恢复的文件,选定后再ls的时候会标记为*
通过extract还原选定的文件。
提示“Specify next volume”时填如1,它表示是在单独一卷磁带(这里我用的是磁盘的空间)上进行的备份。下面一行提示选“n”,表示不是恢复整个文件系统,而是单个文件。

由于dump是记录整个文件系统的,因此测试还原时也应该要给予一个全新的文件系统才行。
#fdisk /dev/sda
....
#partprobe
#mkfs -t ext4 /dev/sda8
#mount /dev/sda8 /mnt
#cd /mnt
#restore -r -f /root/boot.dump

三、dd方式备份系统

dd可以读取磁碟装置的内容(几乎是直接读取磁区"sector"),然后将整个装置备份成一个文件呢!真的是相当的好用啊~ dd 的用途有很多啦~但是我们仅讲一些比较重要的选项,如下:

[root@www ~]# dd if="input_file" of="output_file" bs="block_size" count="number"
选项与参数:
if   :就是 input file 也可以是装置
of   :就是 output file 也可以是装置
bs   :规划的一个 block 的大小,若未指定则默认是 512 bytes(一个 sector 的大小)
count:多少个 bs 的意思。

范例一:将 /etc/passwd 备份到 /tmp/passwd.back 当中
[root@www ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
1945 bytes (1.9 kB) copied, 0.000332893 seconds, 5.8 MB/s
[root@www ~]# ll /etc/passwd /tmp/passwd.back
-rw-r--r-- 1 root root 1945 Sep 29 02:21 /etc/passwd
-rw-r--r-- 1 root root 1945 Dec 17 18:09 /tmp/passwd.back
# 仔细看一下,我的 /etc/passwd 文件大小为 1945 bytes,因为我没有配置 bs ,
# 所以默认是 512 bytes 为一个单位,因此,上面那个 3+1 表示有 3 个完整的
# 512 bytes,以及未满 512 bytes 的另一个 block 的意思
# 感觉好像是 cp 这个命令

范例二:将自己的磁碟之第一个磁区备份下来
[root@www ~]# dd if=/dev/hdc of=/tmp/mbr.back bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0104586 seconds, 49.0 kB/s
# 第一个磁区内含有 MBR 与 partition table ,透过这个动作,
# 我们可以一口气将这个磁碟的 MBR 与 partition table 进行备份!

范例三:找出你系统最小的那个分割槽,并且将他备份下来:
[root@www ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.9G  5.1G  44% /
/dev/hdc3             4.8G  651M  3.9G  15% /home
/dev/hdc1              99M   21M   73M  23% /boot  <==就捉他
[root@www ~]# dd if=/dev/hdc1 of=/tmp/boot.whole.disk
208782+0 records in
208782+0 records out
106896384 bytes (107 MB) copied, 6.24721 seconds, 17.1 MB/s
[root@www ~]# ll -h /tmp/boot.whole.disk
-rw-r--r-- 1 root root 102M Dec 17 18:14 /tmp/boot.whole.disk
# 等于是将整个 /dev/hdc1 捉下来的意思~如果要还原呢?就反向回去!
# dd if=/tmp/boot.whole.disk of=/dev/hdc1 即可!非常简单!
# 简单的说,如果想要整个硬盘备份的话,就类似 Norton 的 ghost 软件一般,
# 由 disk 到 disk ,利用 dd 就可以!

例题:
你想要将你的 /dev/hdc1 进行完整的复制到另一个 partition 上,请使用你的系统上面未分割完毕的容量再创建一个与 /dev/hdc1 差不多大小的分割槽 (只能比 /dev/hdc1 大,不能比他小!),然后将之进行完整的复制 (包括需要复制 boot sector 的区块)。

答:
由于需要复制 boot sector 的区块,所以使用 cp 或者是 tar 这种命令是无法达成需求的!此时那个dd 就派的上用场了。你可以这样做:

# 1. 先进行分割的动作
[root@www ~]# fdisk -l /dev/hdc
   Device Boot   Start    End    Blocks   Id  System
/dev/hdc1   *        1     13    104391   83  Linux

[root@www ~]# fdisk /dev/hdc
Command (m for help): n
First cylinder (2354-5005, default 2354): 这里按 enter
Using default value 2354
Last cylinder or +size or +sizeM or +sizeK (2354-5005, default 5005): 2366

Command (m for help): p
   Device Boot   Start    End    Blocks   Id  System
/dev/hdc9         2354   2366    104391   83  Linux

Command (m for help): w
# 为什么要使用 2366 呢?因为 /dev/hdc1 使用 13 个磁柱,因此新的 partition
# 我们也给它 13 个磁柱,因此 2354 + 13 -1 = 2366

[root@www ~]# partprobe

# 2. 不需要格式化,直接进行 sector 表面的复制!
[root@www ~]# dd if=/dev/hdc1 of=/dev/hdc9
208782+0 records in
208782+0 records out
106896384 bytes (107 MB) copied, 16.8797 seconds, 6.3 MB/s

[root@www ~]# mount /dev/hdc9 /mnt
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hdc1               101086     21408     74459  23% /boot
/dev/hdc9               101086     21408     74459  23% /mnt
# 一模一样
[root@www ~]# umount /mnt

范例四:在容量相同的硬盘间进行克隆系统
# dd if=/dev/sda of=/dev/sdb
其中,/dev/sda为系统盘,/dev/sdb是第二个硬盘。
直接将系统进行克隆,克隆后关机,取出第一块硬盘,将第二个硬盘插入到第一块盘的位置,可以正常启动服务器。

四、实际案例测试:
采用dd方式克隆系统

1、查看系统状态
[root@d155 /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda4             620G   17G  573G   3% /
tmpfs                  63G     0   63G   0% /dev/shm
/dev/sda1             291M   36M  241M  13% /boot
/dev/sda2             2.1T  1.7T  354G  83% /disk1
/dev/sdb1             2.8T  1.7T  948G  65% /disk2
/dev/sdc1             2.8T  1.7T  959G  64% /disk3
/dev/sdd1             2.8T  1.7T  992G  63% /disk4

[root@dn155 diskb]# fdisk -l
硬盘都是GPT格式的 3T硬盘
Disk /dev/sdc: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1      267350  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

Disk /dev/sdd: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1      267350  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      267350  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

Disk /dev/sda: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1      267350  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

当前的分区情况:
sda   sda1  sda2  sda3  sda4  sdb   sdb1  sdc   sdc1  sdd   sdd1

2、克隆系统
dd操作,将/dev/sda这个是系统硬盘,dd到/dev/sdb上
[root@d155 /]# dd if=/dev/sda of=/dev/sdb
默认看不到进度,可以开启另一个链接
watch -n 5 killall -USR1 dd
查看原来的dd命令界面可以看到进度了,这里的killall不是杀死进程的意思,是发信号
这个操作使用了24个小时完成的

3、还原测试
服务器关机,取出原系统硬盘,将第二块硬盘插到第一个盘的位置,启动服务器。正常启动,数据都一样的。
这里提示下,如果使用第二块盘启动后,正常关机,将第二块放会到原来位置,第一块盘放回到原来位置,这是启动服务器后,实际还是启动了第二块盘系统,
需要将第二块盘取出,之后使用原系统启动一次,在将第二块盘插上,才不影响。

克隆完成后还会发现,第二块的分区和原系统分区数量一致的。
第一块sda   sda1  sda2  sda3  sda4  
第二块sdb   sdb1  sdb2  sdb3  sdb4

现在的分区情况:
sda   sda1  sda2  sda3  sda4  sdb   sdb1  sdb2  sdb3  sdb4  sdc   sdc1  sdd   sdd1

mount sdb4的话可以看到/目录的文件,sdb1是boot文件

最后可以用rsync备份的文件进行恢复到最新的内容了。

五、总结:
系统备份/还原的话,建议先在测试环境尝试使用下,
基本上硬盘出现物理故障后需要恢复系统。

情况一:
比如服务器4块硬盘,第一块是系统盘,第一块盘物理故障,导致服务器挂了,假设你dd克隆的系统在第二块硬盘上,日常备份的文件在第三块硬盘上了。
恢复的流程:
1、将所有硬盘拿下来,第二块硬盘插到第一块盘的位置,正常重启,系统可以启动,但数据不是最新的数据
2、将rsync备份的数据还原到当前系统上,完成系统恢复了

情况二:
比如服务器4块硬盘,第一块是系统盘,第一块盘物理故障,导致服务器挂了,假设日常只使用rsync备份文件,在第二块硬盘上了
1、将4块盘取出,安装一块新硬盘,从新装系统,分区大小一致。(之前最好能保留一份分区的详情)
2、挂载第2、3、4硬盘,看看是否正常读取文件
3、将rsync备份的文件恢复到新系统硬盘上去,重启,服务器是否正常启动

对比说明:
1、dd+rsync的方式比较省事一些,但是dd的时候3T硬盘,我自己使用了24个小时才完成,dd不会考虑数据大小,而是整块盘大小克隆。
2、rsync的方式需要重新安装系统,在还原数据文件,会麻烦一些。

六、建议系统备份方式:
1、使用dd克隆硬盘(默认操作一次就好,24小时等等可以的)
2、之后使用rsync定期对数据进行备份(建议全量)

参考:
http://blog.csdn.net/sophiafxr/article/details/52176756
http://arhat.blog.51cto.com/101503/121994
http://blog.csdn.net/zyq522376829/article/details/47316581

Linux centOS系统备份还原(dd+rsync方式)相关推荐

  1. Linux服务器系统备份还原

    1.备份服务器上面的数据 利用tar指令对linux系统下面的文件打包成为一个压缩文件. tar -cvpzf backup.tgz --exclude=/proc --exclude=/lost+f ...

  2. linux怎么用启动u盘恢复系统,一种U盘引导下的linux系统备份还原方法与流程

    本发明涉及的是一种U盘引导下的linux系统备份还原方法. 背景技术: 在现有技术中,公知的技术是数据信息时代数据迅速的增长趋势,需要对已有数据进行有效备份,以便故障发生后能快速有效的对系统进行恢复. ...

  3. ubuntu系统备份还原(迁移)到另外一台电脑上

    ubuntu系统备份还原(迁移)到另外一台电脑上 主要参考如下博客: https://blog.csdn.net/zeg635702733/article/details/53992224 https ...

  4. Linux(centos)系统各个目录的作用详解

    转自:Linux(centos)系统各个目录的作用详解 现在公司的服务器使用CentOS系统,在网上找到了这篇介绍linux各个目录的文章,觉得十分不错,所以拿来存个档. 整理之后如下: 文件系统的类 ...

  5. win7系统备份还原软件_泰哥一键备份还原下载_泰哥一键备份还原官方版下载[系统备份]...

          泰哥一键备份还原官方版是一款优秀的系统备份还原工具,泰哥一键备份还原官方版可以帮助用户在 Win32(64).WinPE.DOS 下对任意分区进行一键备份.恢复,泰哥一键备份还原官方版支持 ...

  6. win7系统备份还原软件_泰哥一键备份还原下载-系统备份还原工具 v1.0.1.14 官方版...

    泰哥一键备份还原是一款非常简单且实用的系统备份还原工具,可帮助用户快速将系统数据进行备份或者还原,支持多种不同的系统,包括Win32(64).WinPE.DOS等,可对任意分区进行备份还原操作,具备简 ...

  7. ORM v4.1.29.1,全程傻瓜式操作的系统备份还原工具

    2019独角兽企业重金招聘Python工程师标准>>> ORM v4.1.29.1,全程傻瓜式操作的系统备份还原工具 ORM,一键还原系统是一款全程傻瓜式操作的系统备份还原工具,其备 ...

  8. AOMEI OneKey Recovery Pro(傲梅一键还原软件)官方中文版V1.6.4 | 最好的系统备份还原软件之一

    AOMEI OneKey Recovery Pro 是一款优秀实用的专业系统备份还原工具,也叫傲梅一键还原软件,为用户提供一体化数据保护和灾难恢复解决方案,可以将系统备份到U盘.移动硬盘等其它存储设备 ...

  9. linux通过yum安装vim,linux/centos系统如何使用yum安装vi/vim?

    linux/centos系统如何使用yum安装vi/vim? yum安装vim最简单的命令, yum -y install vim* 然后就可以使用vi命令了. 网上的文章: 要使用vim, 使用yu ...

最新文章

  1. linux 下ab压力测试
  2. tomact如何处理一个http请求?
  3. CentOS下系统时间同步和时区的修改和设置(用的这个)
  4. iOS开发时间戳与时间,时区的转换,汉字与UTF8,16进制的转换
  5. 局域网共享问题全方位解决
  6. 2016年4月 TIOBE 编程语言排行榜
  7. PPA格式Linux安装,Ubuntu12.04 用PPA安装fcitx和搜狗输入法附加组件Linux版
  8. BeginnersBook Perl 教程
  9. 使用开源框架Sqlsugar结合mysql开发一个小demo
  10. python for IOS,支持iPhone
  11. 2018福大软工实践第七次作业
  12. [转]MySQL游标特性
  13. 微信小程序转盘实现(真心话大冒险)
  14. Web前端-HTML基础
  15. 什么软件测试显示器响应时间准,液晶响应时间测试系统
  16. python爬取微信公众号的几种方法_一种爬取微信公众号信息的方法与流程
  17. node启动服务报错Error: listen EADDRNOTAVAIL 192.168.1.137:8023
  18. widows计算器恢复
  19. 一个简单的猜拳小游戏
  20. 微博直播场景下,如何实现百万并发的答题互动系统

热门文章

  1. Virtualbox加载虚拟机镜像
  2. 杉车网数据报告:2019年,新能源汽车渐入佳境
  3. python自动化测试 视频百度云_柠檬班python自动化测试开发课程
  4. 16.opengl-qt 基础光照
  5. 装逼软件推荐(持续)
  6. PhotoShop学习篇
  7. MNE学习笔记(六):Epoched data的可视化
  8. 数据结构基础之堆排序
  9. 【STL】C++ STL超全总结
  10. 服务器无线组网,物联网无线组网介绍