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

主要参考如下博客:

https://blog.csdn.net/zeg635702733/article/details/53992224

https://blog.csdn.net/qq_35523593/article/details/78545530

系统:ubuntu16.04.4LTS

1.首先用U盘制作一个Ubuntu16.04.4LTS的系统启动盘。

2.备份原理就是将系统文件压缩打包,还原就是解压压缩包。

由于Linux系统所有都是文件,只需要将系统打包即可。有些文件是系统运行中所产生的文件以及临时文件,可以不用打包。第一种打包方式,直接在Linux系统下压缩打包(发现tar在打包最后会报错,不会有影响)。

在新电脑上使用Live USB,其实就是刚刚用U盘做的系统启动盘,进入使用ubuntu。进入试用Ubuntu后,先获取root权限,sudopasswd root,更改root密码后,然后切换root用户。su root。

第二种打包方式(推荐使用),使用Live USB,其实就是刚刚用U盘做的系统镜像,进入试用,跟上面操作一样,然后再进行打包。

这两种都是亲自测试过,都可以。

挂载备份的系统硬盘.可以使用fdisk -l(比如root权限)查看硬盘号,确认那个是作为还原系统的硬盘。

3.对新硬盘先进行分区,如果未对硬盘进行分区过,硬盘是不会被挂载的。可通过sudo blkid,会告诉你有一块无法识别文件类型的硬盘。把新硬盘进行分区,建议分区要跟备份的那台电脑分区一致,也可不一致。(跟第五步有关系)

备注:通过LiveUSB只进行分区,发现把后面的步骤做完,电脑会提示找不到这块硬盘,这个没找到原因,希望看完这篇博客,并尝试解决的,欢迎在下面留言。不过本人是通过彻底装完系统后,将它的所有的分区文件全部替换掉。

4.备份系统(内容来源:https://blog.csdn.net/qq_35523593/article/details/78545530

)linux秉承一切皆文件的思想,系统备份就相当于把整个/(根目录)所有文件打包压缩保存。

备份前先切换到root用户,避免权限问题,然后切换到/(根目录)。

tar -cvpzf /media/zx/KINGSTON/ubuntu_backup@`date+%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot--exclude=/home --exclude=/lost+found --exclude=/media --exclude=/mnt--exclude=/run /

下面解释一下上面这条命令。tar就是一个打包命令。

打包文件放在的目录及打包文件名字。
* /media/zx/KINGSTON/ubuntu_backup@date+%Y-%m+%d.tar.gz

这里用了一个shell命令date+%Y-%m+%d用于获取当前时间,因为备份嘛,注明时间戳还是有必要的,然后.tar.gz是说明这个文件是用tar进行打包,gzip进行压缩的。所以要根据你自己情况换为你自己的备份文件目录和文件名。

参数:
-c: 新建一个备份文档
-v: 显示详细信息
-p: 保存权限,并应用到所有文件
-z: 用gzip压缩备份文档,减小空间
-f: 指定备份文件的路径
–exclude: 排除指定目录,不进行备份

Note: 注意–exclude参数,接下来谈谈那些目录没有备份,以及为什么不备份。

我的ubuntu系统,共有四个分区,分别是:/、/home、/boot、swap。

  • 非常建议系统备份的时候按照分区进行分别备份,并且也不建议安装系统的时候只给系统分一个分区。有四个分区的好处是,一般系统坏了都是/分区的问题,/home没什么关系,所以这种情况,我可以只还原/分区,其他分区完全可以不用动,系统就可以恢复,会节省很多时间。
  • 另外,为了保险起见,也可以对/home和/boot备份,但是备份频率完全没必要和/分区一样高。比如/分区每周备份一次,那/home和/boot完全可以一个月备份一次,因为这两个分区出问题的概率真的很小,而且变动也不会太频繁。
  • 请注意,如果没有把/home或者/boot目录单独分一个区,一定不要加–exclude=/home或–exclude=/boot参数!!!

/proc:一个虚拟文件系统,系统运行的每一个进程都会自动在这个目录下面创建一个进程目录。既然是系统自动创建,也就没必要备份的必要了。
/tmp:一个临时文件夹,系统的一些临时文件会放在这里。
/lost+found:系统发生错误时(比如非法关机),可以在这里找回一些丢失文件。
/media:多媒体挂载点,像u盘、移动硬盘、windons分区等都会自动挂载到这个目录下。
/mnt:临时挂载点,你可以自己挂载一些文件系统到这里。
/run:系统从启动以来产生的一些信息文件。
/home:用户家目录,存放用户个人文件和应用程序。
/boot:和系统启动相关的文件,像grub相关文件都放在这里,这个目录很重要!

我再次强调一次,/home和/boot目录我实际也是做了备份的,备份命令和上面差不多,当然你也可以排除一些目录不进行备份,像我/home下面的虚拟机文件,太占空间了。

tar -cvpzf /media/zx/KINGSTON/ubuntu_home_backup@`date+%Y-%m-%d`.tar.gz /home

tar -cvpzf /media/zx/KINGSTON/ubuntu_boot_backup@`date+%Y-%m-%d`.tar.gz /boot

 

5.替换备份系统配置文件,以及修改启动文件中的UUID:

这一步很重要。如果你的boot,是单独分区,那么你要注意了!!!,你通过live USB,在一台安装好的ubuntu电脑上,进入试用,你看/boot下里面是没有文件的。如果是单独分区的,你通过sudo blkid,并且记住/ /boot /home swap的uuid,并且可以在/etc下的fstab文件里面找到这四个uuid值,文件的信息可自行百度,不在此说明。如果/boot没有单独挂载,那么fstab里面没有/boot的uuid信息。可以看到找到boot的uuid,他是单独挂载,通过uuid值找到挂载点进入单独挂载的boot下,原来启动文件在单独挂载的boot文件目录下。

在新电脑上通过liveUSB,进入试用,将之前备份的压缩包通过U盘拷贝过来,也可直接解压。开始解压

tar -xvpzf /media/zx/KINGSTON/ubuntu_boot_backup@2018-6-30.tar.gz-C

10da9d77-10c2-4978-9065-ed8194f23545(新硬盘的/挂载的uuid值)

mkdir proc tmp lost+found media mnt run

这个 /不是live USB的/ ,而是上面新硬盘的/,他是有uuid的,是单独挂载的。

接下来就是改配置文件了,把新硬盘的boot下面的grub目录下的grup.cfg里面的uuid替换掉,这里面很重要。如果没有把boot单独分区那么你只要将里面的uuid全部改成新硬盘的/的uuid,(考虑启动过程没有其他挂载的情况)。如果是单独分区的话,注意这个文件下还有boot的uuid的值,如果还有其他挂载,还有多个uuid值。所以更改uuid值要区分/、boot、其他挂载的uuid值。一般来说,这个文件里只有出现一个或者两个关于uuid的值(boot是否单独分区)。下面这句话改为/,boot的uuid值。

search --no-floppy --fs-uuid --set=root18c7c7d4-062a-4fde-86bc-c14c3d15199b(区别/和/boot的值,不要给错,不然会开不了机的)

grub.cfg文件内容:

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by grub-mkconfig usingtemplates

# from /etc/grub.d and settings from /etc/default/grub

#

### BEGIN /etc/grub.d/00_header ###

if [ -s $prefix/grubenv ]; then

sethave_grubenv=true

load_env

fi

if [ "${next_entry}" ] ; then

setdefault="${next_entry}"

set next_entry=

save_envnext_entry

setboot_once=true

else

setdefault="0"

fi

if [ x"${feature_menuentry_id}" = xy ]; then

menuentry_id_option="--id"

else

menuentry_id_option=""

fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then

setsaved_entry="${prev_saved_entry}"

save_envsaved_entry

setprev_saved_entry=

save_envprev_saved_entry

setboot_once=true

fi

function savedefault {

if [ -z"${boot_once}" ]; then

saved_entry="${chosen}"

save_envsaved_entry

fi

}

function recordfail {

set recordfail=1

if [ -n"${have_grubenv}" ]; then if [ -z "${boot_once}" ]; thensave_env recordfail; fi; fi

}

function load_video {

if [x$feature_all_video_module = xy ]; then

insmodall_video

else

insmod efi_gop

insmod efi_uga

insmodieee1275_fb

insmod vbe

insmod vga

insmodvideo_bochs

insmodvideo_cirrus

fi

}

if [ x$feature_default_font_path = xy ] ; then

font=unicode

else

insmod part_msdos

insmod ext2

set root='hd0,msdos7'

if [ x$feature_platform_search_hint = xy ]; then

search--no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7--hint-baremetal=ahci0,msdos7  c7f7a223-c4aa-47f7-8f87-70e5c07de8c1

else

search--no-floppy --fs-uuid --set=root c7f7a223-c4aa-47f7-8f87-70e5c07de8c1

fi

font="/share/grub/unicode.pf2"

fi

if loadfont $font ; then

set gfxmode=auto

load_video

insmod gfxterm

setlocale_dir=$prefix/locale

set lang=zh_CN

insmod gettext

fi

terminal_output gfxterm

if [ "${recordfail}" = 1 ] ; then

set timeout=30

else

if [x$feature_timeout_style = xy ] ; then

settimeout_style=hidden

set timeout=0

# Fallbackhidden-timeout code in case the timeout_style feature is

# unavailable.

elif sleep--interruptible 0 ; then

set timeout=0

fi

fi

### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###

set menu_color_normal=white/black

set menu_color_highlight=black/light-gray

if background_color 44,0,30,0; then

clear

fi

### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###

function gfxmode {

setgfxpayload="${1}"

if ["${1}" = "keep" ]; then

setvt_handoff=vt.handoff=7

else

setvt_handoff=

fi

}

if [ "${recordfail}" != 1 ]; then

if [ -e${prefix}/gfxblacklist.txt ]; then

if hwmatch${prefix}/gfxblacklist.txt 3; then

if [ ${match}= 0 ]; then

setlinux_gfx_mode=keep

else

setlinux_gfx_mode=text

fi

else

setlinux_gfx_mode=text

fi

else

setlinux_gfx_mode=keep

fi

else

setlinux_gfx_mode=text

fi

export linux_gfx_mode

menuentry 'Ubuntu' --class ubuntu --class gnu-linux--class gnu --class os $menuentry_id_option 'gnulinux-simple-e763fea9-65c8-4985-956a-e835125e2ed0'{

recordfail

load_video

gfxmode$linux_gfx_mode

insmod gzio

insmodpart_msdos

insmod ext2

setroot='hd0,msdos5'

if [x$feature_platform_search_hint = xy ]; then

search --no-floppy --fs-uuid --set=root--hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  18c7c7d4-062a-4fde-86bc-c14c3d15199b

else

search --no-floppy --fs-uuid --set=root 18c7c7d4-062a-4fde-86bc-c14c3d15199b

fi

linux   /vmlinuz-4.4.0-31-generic root=UUID=e763fea9-65c8-4985-956a-e835125e2ed0ro find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US quiet

initrd  /initrd.img-4.4.0-31-generic

}

submenu 'Ubuntu 高级选项' $menuentry_id_option 'gnulinux-advanced-e763fea9-65c8-4985-956a-e835125e2ed0' {

menuentry 'Ubuntu,Linux 4.4.0-31-generic' --class ubuntu --class gnu-linux--class gnu --class os $menuentry_id_option'gnulinux-4.4.0-31-generic-advanced-e763fea9-65c8-4985-956a-e835125e2ed0' {

recordfail

load_video

gfxmode$linux_gfx_mode

insmodgzio

insmodpart_msdos

insmodext2

setroot='hd0,msdos5'

if [x$feature_platform_search_hint = xy ]; then

search --no-floppy --fs-uuid --set=root--hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  18c7c7d4-062a-4fde-86bc-c14c3d15199b

else

search --no-floppy --fs-uuid --set=root 18c7c7d4-062a-4fde-86bc-c14c3d15199b

fi

echo    '载入 Linux 4.4.0-31-generic ...'

linux   /vmlinuz-4.4.0-31-generic root=UUID=e763fea9-65c8-4985-956a-e835125e2ed0ro find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US quiet

echo    '载入初始化内存盘...'

initrd  /initrd.img-4.4.0-31-generic

}

menuentry'Ubuntu, with Linux 4.4.0-31-generic (recovery mode)' --class ubuntu --classgnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-31-generic-recovery-e763fea9-65c8-4985-956a-e835125e2ed0'{

recordfail

load_video

insmodgzio

insmodpart_msdos

insmodext2

setroot='hd0,msdos5'

if [x$feature_platform_search_hint = xy ]; then

search --no-floppy --fs-uuid --set=root--hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  18c7c7d4-062a-4fde-86bc-c14c3d15199b

else

search --no-floppy --fs-uuid --set=root 18c7c7d4-062a-4fde-86bc-c14c3d15199b

fi

echo    '载入 Linux 4.4.0-31-generic ...'

linux   /vmlinuz-4.4.0-31-generic root=UUID=e763fea9-65c8-4985-956a-e835125e2ed0ro recovery nomodeset find_preseed=/preseed.cfg auto noprompt priority=criticallocale=en_US

echo    '载入初始化内存盘...'

initrd  /initrd.img-4.4.0-31-generic

}

}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###

menuentry 'Memory test (memtest86+)' {

insmodpart_msdos

insmod ext2

setroot='hd0,msdos5'

if [x$feature_platform_search_hint = xy ]; then

search --no-floppy --fs-uuid --set=root--hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  18c7c7d4-062a-4fde-86bc-c14c3d15199b

else

search --no-floppy --fs-uuid --set=root 18c7c7d4-062a-4fde-86bc-c14c3d15199b

fi

knetbsd /memtest86+.elf

}

menuentry 'Memory test (memtest86+, serial console115200)' {

insmodpart_msdos

insmod ext2

setroot='hd0,msdos5'

if [x$feature_platform_search_hint = xy ]; then

search --no-floppy --fs-uuid --set=root--hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  18c7c7d4-062a-4fde-86bc-c14c3d15199b

else

search --no-floppy --fs-uuid --set=root 18c7c7d4-062a-4fde-86bc-c14c3d15199b

fi

linux16 /memtest86+.bin console=ttyS0,115200n8

}

### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###

### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###

### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###

# This file provides an easy way to add custom menuentries.  Simply type the

# menu entries you want to add after this comment.  Be careful not to change

# the 'exec tail' line above.

### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###

if [ -f ${config_directory}/custom.cfg ]; then

source${config_directory}/custom.cfg

elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then

source$prefix/custom.cfg;

fi

### END /etc/grub.d/41_custom ###

红色为/usr的uuid值,蓝色为/的uuid值,黄色为boot的uuid值。

提醒:如果对grub.cfg这个文件不了解,建议对着备份系统的grub.cfg文件修改,此过程很重要!!!!!!!!!!!!!!

接下来改掉新硬盘的/etc/fstab下面的/,/boot,/home,swap,的uuid值(新硬盘的四个单独挂载uiid值)。

/dev/sda1:UUID="22dc6da0-1ec0-4634-8691-cc83af2aa8f3" TYPE="swap"

/dev/sda2:UUID="e763fea9-65c8-4985-956a-e835125e2ed0" TYPE="ext4"

/dev/sda5:UUID="18c7c7d4-062a-4fde-86bc-c14c3d15199b" TYPE="ext4"

/dev/sda6:UUID="7165cd11-fb03-422c-8fd5-1215d96b1806" TYPE="ext4"

/dev/sda7:UUID="c7f7a223-c4aa-47f7-8f87-70e5c07de8c1" TYPE="ext4"

还有一个分区是/usr的(/dev/sda7:UUID="c7f7a223-c4aa-47f7-8f87-70e5c07de8c1" TYPE="ext4")。

到了这一步系统是迁移完了,发现桌面不能启动。其实有没有桌面,无所谓。当时比较纠结这个问题,后来经同事的提醒,原来自己只是在/home下用户目录,并没有在用户目录下创建跟桌面有关的文件夹,后来跟备份系统用户下的创建一样的文件夹,熟悉的桌面就回来了。

现在一切迁移完成。关闭电脑,拔掉U盘,重启电脑!

网上还有一种方法就是通过remastersys打包成镜像文件安装,具体安装方式请参考这篇博客:https://blog.csdn.net/xiaqunfeng123/article/details/54287517,这也是一种不错的方式。有局限性:大于4G无法打包,显卡驱动不能打包(原因:http://klikit.pbworks.com/w/page/7315114/Remastersys%20-%20Limitations%20of%20remastering)。

总结:

Tar打包方式没有文件权限及其大小局限性,就是耗时间。
这两种方法都是可以的,都是测试过,可以根据自己的具体情况选取。

如有不懂,或者有错误欢迎指出来。本人邮箱:972839018@qq.com

ubuntu系统备份还原(迁移)到另外一台电脑上相关推荐

  1. mysql数据库迁移到另一台电脑上

    解决办法 mysql要转换到另一台机器上面,最重要的要考虑以下几个问题 1.数据库使用什么存储引擎,如果是myisam的话,可以把data目录复制移走.但如果是innodb的话,千万不要用这种方法,会 ...

  2. mysql从一台电脑迁移_mysql数据库迁移到另一台电脑上

    解决办法 mysql要转换到另一台机器上面,最重要的要考虑以下几个问题 1.数据库使用什么存储引擎,如果是myisam的话,可以把data目录复制移走.但如果是innodb的话,千万不要用这种方法,会 ...

  3. ubuntu下的linux怎样备份文件,Ubuntu系统如何备份还原?Ubuntu系统备份还原教程

    Ubuntu系统如何备份还原?Ubuntu系统是一个以桌面应用为主的开源操作系统,专为开发团队而打造!无论你使用的是什么操作系统,都有可能出现电脑无法修复的故障,这时候备份还原功能就显得非常重要了.今 ...

  4. 360桌面助手待办事项同步/迁移的方法(从一台电脑迁移到另外一台电脑上)

    自己的电脑升级,需要把各种数据迁移过来,最难办的是迁移 各种软件的配置,数据信息,例如搜狗输入法用户词库等.这个搜狗输入法提供了导出词库,再导入的功能.360的桌面助手很好用,作者添加了很多待办事项, ...

  5. Ubuntu系统备份还原教程

    一.备份 很多人有备份系统的习惯,以防系统挂.Windows下可以用DISM创建一个系统镜像,在Ubuntu下,我们可以使用squashfs-tools创建系统镜像. 准备工作 可启动LiveCD一份 ...

  6. 将mysql数据库拷贝到另一台机器_mysql数据库迁移到另一台电脑上

    解决办法 mysql要转换到另一台机器上面,最重要的要考虑以下几个问题 1.数据库使用什么存储引擎,如果是myisam的话,可以把data目录复制移走.但如果是innodb的话,千万不要用这种方法,会 ...

  7. mysql 自动备份数据库数据到另一台电脑上(u盘或者移动硬盘上)

    下载MySQL Tools for 5.0这个工具,连接服务器上的mysql生产数据库,然后进入界面,选择backup,设置基本的配置,选择一个保存路径,就可以实现备份,创建过程如图过程:

  8. python迁移到另一台电脑上_如何将一个Jupyter笔记本导入到另一个笔记本

    是的,如果你想的话,你可以把这些代码添加到笔记本上.在 是的,你不应该这样做作为一个普遍的解决方案.在 笔记本是一个复杂的结构,正如在文本细节中所暗示的那样(我认为它是JSON).它可以包含pytho ...

  9. ubuntu系统备份和还原_如何使用Aptik在Ubuntu中备份和还原您的应用程序和PPA

    ubuntu系统备份和还原 If you need to reinstall Ubuntu or if you just want to install a new version from scra ...

最新文章

  1. 这几本豆瓣高分设计好书,人人都应该读!
  2. 初学python还是swift-Swift 势必取代 Python?
  3. C# 笔记 .net与C#简单说明
  4. linux中postscript如何生成,【转载】如何为Linux生成和打上patch
  5. java servlet接口开发_servlet三种实现方式之一实现servlet接口
  6. 智能会议系统(7)---实时音视频技术难点及解决方案
  7. popstate_详解HTML5之pushstate、popstate操作history,无刷新改变当前url
  8. 200 300的完数 c语言,C语言求完数(完全数)(详解版)
  9. 整理了一个目录,督促自己写文章
  10. python游戏编程讲解之凯撒密码
  11. Android setLayoutparams失效几个原因
  12. 硬核拆台!宏彦获水,一脸懵逼:百度李彦宏遭当众泼水,一开始肇事者就在全程直播!!
  13. 解决d3dx9_35.dll丢失找不到
  14. Python+Pgzrun制作打飞机游戏(附源码)
  15. html scale属性,scale() | CSS属性参考
  16. 【安骑士】配置不进行基线检测方法
  17. python是什么邮箱_python发邮件详解,smtplib和email模块详解
  18. 获取本地json文件
  19. 量纲对回归结果的影响_应用回归分析-第3章课后习题参考 答案.doc
  20. JAVA8 十大新特性详解

热门文章

  1. 充电桩,成了新能源汽车发展的“拦路虎”?
  2. python柠檬班第三期错误报告
  3. c51单片机扩展64K的RAM
  4. php环境下,两种汇率接口,已经测试通过
  5. java8 zoneid_java8之localDateTime, ZoneId, Instant使用
  6. 获取微信运动 php,微信运动数据抓取(PHP语言)
  7. 14个java编程技巧,小白必学
  8. 逻辑函数的两种标准形式
  9. keil5打开工程文件显示空白bug
  10. AD域渗透 | PTHPTK哈希传递攻击手法