这是我没搞过的东西,慢慢来,一点一点记录下。
如何备份恢复系统
首要要注意,一切操作都是在使用liveCD的U盘启动的系统上进行操作,不要在备份/恢复的硬盘启动的系统上运行dd。(有硬盘读写的时候执行dd肯定不对啊)
首先就是创建liveCD的U盘启动盘,这个很简单,使用软碟通就好了,不多说。下面主要讲解dd命令
查看磁盘扇区占用情况
将liceCD启动u盘插到要备份的电脑上,选择u盘启动。执行fdisk查看要备份的系统盘的磁盘占用情况:
[root@DC6 ~]# fdisk -u -l /dev/sda
Disk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000929da
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 821247 409600 83 Linux
/dev/sda2 821248 20969087 10073920 83 Linux
从这里可以看到,我们的目标磁盘/dev/sda
(往往是一块固态),所使用的最后一个扇区的扇区号是 20969087。记住这个数字,等会需要使用
使用dd命令创建磁盘映像ghost.img
dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda of=/ghost.img
##在这里 count=20969088。
dd执行完毕后,ghost.img就在U盘中了。
将U盘中的ghost.img写到需要恢复系统的电脑磁盘上
将该liveCD启动u盘插到要恢复系统的电脑上,使用该U盘启动电脑。使用dd命令将ghost.img写进目标磁盘
dd if=/ghost.img of=/dev/sda
执行完毕之后,关机,选择硬盘启动,即可发现系统恢复成功。
使用压缩,减小ghost.img
使用以下命令——使用gzip压缩/解压缩
dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda | gzip -6 > /ghost.img.gz
gzip -dc /ghost.img.gz | dd of=/dev/sda
查看dd进度
watch -n 5 pkill -USR1 ^dd$ #每五秒输出一次进度
13185281+0 records in
13185281+0 records out
6750863872 bytes (6.8 GB) copied, 252.002 s, 26.8 MB/s
13708065+0 records in
13708065+0 records out
7018529280 bytes (7.0 GB) copied, 257.014 s, 27.3 MB/s
14320025+0 records in
14320025+0 records out
恢复系统后的网卡问题
引用:如果你把镜像恢复到另一台计算机上,你可能会发现你的网卡是eth1,而不是eth0。这是因为/etc/udev/rules.d/70-persistent-net.rules文件把你做镜像的计算机的网卡作为eth0登记了。
如果你的网络脚本对eth0进行了处理,而没有对eth1进行处理,那么不修改网络脚本,你可能无法上网了。
也许你会希望在做镜像之前,先删除 /etc/udev/rules.d/70-persistent-net.rules 文件。这样你恢复镜像时,网卡的名字是eth0。 不会造成你在恢复后的计算机上无法上网的问题了。
可能会存在,系统启动后无法上网,使用ifconfig命令只能看到lo这一个网卡,无eth0网卡。这是因为恢复系统时将老系统上存留的网卡配置也带了过来,但是与新机器信息不对导致的。因此需要更正这一部分的配置。eth0的配置在:
/etc/sysconfig/network-scripts/ifcfg-eth0
先来看看几种ifcfg-eth0
的内容吧
cat /etc/sysconfig/network-scripts/ifcfg-eth0
==================================
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
==================================
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=dhcp
ONBOOT=yes
DEFROUTE=yes
==================================
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.2.31
GATEWAY=192.168.2.1
NETMASK=255.255.255.0
==================================
DEVICE=eth0
HWADDR=52:54:00:A3:5A:FB
IPADDR=10.23.238.233
NETMASK=255.255.0.0
GATEWAY=10.23.0.1
BOOTPROTO=none
PEERDNS=yes
USERCTL=no
NM_CONTROLLED=no
ONBOOT=yes
MTU=1454
DNS1=10.23.255.1
DNS2=10.23.255.2
DNS3=114.114.114.114
==================================
现在来看看这些都是什么意思,从CSDN上找到一篇Linux网络接口配置文件ifcfg-eth0解析
1 TYPE:
- 配置文件接口类型。在/etc/sysconfig/network-scripts/目录有多种网络配置文件,有Ethernet 、IPsec等类型,网络接口类型为Ethernet。
2 DEVICE:
- 网络接口名称
3 BOOTPROTO
- 系统启动地址协议
- none:不使用启动地址协议;
- bootp:BOOTP协议;
- dhcp:DHCP动态地址协议;
- static:静态地址协议
4 ONBOOT
- 系统启动时是否激活
- yes:系统启动时激活该网络接口;
- no:系统启动时不激活该网络接口;
5 IPADDR
- IP地址
6 NETMASK
- 子网掩码
7 GATEWAY
- 网关地址
8 BROADCAST
- 广播地址
9 HWADDR/MACADDR
- MAC地址。只需设置其中一个,同时设置时不能相互冲突。
10 PEERDNS
- 是否自动从自动获取IP的方式(如dhcp)中获取DNS写入
/etc/resolv.conf
- no:不修改/etc/resolv.conf
- yes:使用dhcp获取的dns或者下面配置的 DNS{1, 2}
- BOOTPROTO为dhcp时,dhcp会自动设置DNS服务器,此时PEERDNS默认为yes,意味着使用DHCP指定的dns
- BOOTPROTO不为自动获取ip时,此时PEERDNS默认为no,需要设置DNS1、DNS2作为dns
11 DNS{1, 2}
- DNS地址。当PEERDNS为no时会被写入/etc/resolv.conf中。
12 NM_CONTROLLED
- 是否由Network Manager控制该网络接口。修改保存后立即生效,无需重启。被其坑过几次,建议一般设为no。
- yes:由Network Manager控制;
- no:不由Network Manager控制;
13 USERCTL
- 用户权限控制
- yes:非root用户允许控制该网络接口;
- no:非root用户不运行控制该网络接口;
14 IPV6INIT
- 是否执行IPv6 yes/no
15 IPV6ADDR
- IPv6地址/前缀长度
知道这些参数的含义,应该就能模仿以上的ifcfg-eth0
写出自己的网卡配置了。使用dhcp的最为简单,需要自己配置静态ip的需要做的就比较多了,要填写子网掩码、网关,这些信息在某些云服务商那里还是挺难获取的呀。