http://xing.rocks/2015/03/06/ubuntu%E7%B3%BB%E7%BB%9F%E5%A4%87%E4%BB%BD%E4%B8%8E%E8%BF%98%E5%8E%9F/
前段时间电脑出了问题,要换台电脑工作,要在Ubuntu系统上搭建一个完善的工作环境挺费劲的,而且上面还有正在做的一个网站。因此,需要备份整个系统。
Ubuntu系统备份现在还没有一个很好的软件,但是由于Linux中一切皆是文件,所以直接用tar打包个系统即可。在网上有一些比较好的例子,例如落花往事的博客.如果在备份中tar报错,自己根据提示信息排除特定文件夹即可。另外,备份前可以先关闭mysql之类的服务,防止程序运行导致备份时出差错。本篇记录的是自己在还原过程中出现的错误以及解决方法。
一、备份系统
1
2
|
sudo -s
tar cpzPf ubuntu.tgz --
exclude=/proc --exclude=/lost+found --exclude=ubuntu.tgz --exclude=/mnt --exclude=/sys --exclude=/home/xing/VirtualBox\ VMs/ --exclude=/home/xing/.cache /
|
参数:
- -c :建立一个压缩文件的参数指令(create 的意思)
- -p :使用原文件的原来属性(属性不会依据使用者而变)
- -z :同时具有gzip的属性,即使用gzip压缩
- -v :压缩的过程中显示文件
- -f :使用档名
- -P :使用绝对路径来压缩
- —exclude FILE:排除的文件目录
记得在打包过程中出现错误的文件目录要自行排除
二、还原系统
安装新系统后,先先备份/boot和/etc/fstab,前者是记录了开机boot选择的信息,后者记录了
分区挂载信息,变了就无法进入系统了。
然后将ubuntu.tgz拷贝到根目录,运行命令:
1
2
|
sudo -s
tar xvpfz ubuntu.tgz -C /
|
最后将备份的/boot和/etc/fstab复原
三、分区挂载
第一次没有经验,还原时没有备份fstab文件,导致开机后无法以原来的用户的挂载点消失,无法
进入系统,因此要重新改写fstab文件。 开机后进入登陆界面,按Ctrl+Alt+F1进入后台,然后就
可以用root权限操作了。
1. 首先,查看分区信息和磁盘类型:
1
2
|
sudo fdisk -l
sudo blkid
|
2. 然后,根据/etc/fstab格式修改
配置文件包含以下几项:
file system、 mount point、 type、options、dump、pass
- system:分区定位,UUID 例如:/dev/sda5的是UUID=f00318bf-f572-4b9d-adcf-5d583c449b08
- mount point : 具体挂载点的位置,例如:/boot
- type : 磁盘类型,linux分区一般为ext4,windows分区一般为ntfs
- options : 挂载参数,一般为defaults
- dump : 磁盘备份,默认为0,不备份
- pass : 磁盘检查,默认为0,不检查
3. 最后,检查挂载是否成功
1
|
sudo mount -a
|
如果没有问题,就大告成功了,再次登陆即可进入桌面了。
四、mysql重置密码
用了几天下来,apache、gbrowse、甚至QQ国际版都能很好的运行,目前只发现mysql在终端登陆时出错:
Access denied for user ‘root’@’localhost’ (using password:YES).可能是备份的时候mysql一直在运行,导致一些文件发生了丢失或错误。
使用mysqladmin也无法修改密码。最后找到了一种方法,参考mysql Access denied for user root@localhost错误解决方法总结
方法如下:
1
2
3
4
5
6
7
8
9
|
service mysql stop
mysqld_safe --user=mysql --
skip-grant-tables --skip-networking &
mysql -u root mysql
mysql> UPDATE user
SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
service restart
mysql -uroot -p
Enter password: <输入新设的密码newpassword>
|
其中核心的一点就就是参数—skip-grant-tables,即不使用密码也可以登陆mysql;—user
=mysql是以mysql用户身份运行,—skip-networking是只在本地运行,不必监听网络端口。然后就可以在
mysql表中更改用户密码了,最后成功登陆。