搞了一天,终于成功迁移。由于一开始就没备份过程实在很曲折。

希望本篇对那些没有备份习惯的朋友们有所帮助。

准备工作:

sudo vim /etc/fstab

在文件中加入:

/dev/sdb8       /home            ext4    user,rw 0       2

这里其实有问题的,后面会提到

一个新的linux分区,这里我的新分区是sdb8,个人不尽相同。我用的是ext4格式,注意要新的,不要有坏块,最好重新格式化下。我就是因为没格式化,吃过亏,logo界面就提示挂载出错,真心寒。

果断进入 ctrl +alt + f1,命令行模式,执行mount -a , 系统会提示输入一个指令,我输入这个指令后,发现有坏块,果断格式化

怎么格式化,这里不详细讲解了。用命令mkfs就可以,保险起见,我还用了sudo fdisk /dev/sdb查看了分区表情况,也正常。


那么接下来将详细讲述本文重点部分,就是不备份情况如何成功迁移/home至新分区

格式化完毕,分区别也正常,那么重启。然后问题来了:无法登入桌面。一直要你输入密码,密码没有问题,因为tty1,即开头讲的命令行可以登陆。

无法登入桌面的原因,网上有很多,方法也很多。我之前也碰到过一次,之前因为我肆无忌惮的删除各种依赖包,导致系统文件损坏,网上纵使有很多大神,我也只能说是回天乏力,无奈之下,我只能重装,就诞生了那篇分区表损坏情况下重装日志。所以还请各位删依赖的时候,千万要小心,除非你记得,这些依赖包的名字,你可以重新install回来。

那么这次无法登入桌面,原因是完全不一样的,因为我发现我用会客是可以登入的,说明桌面系统并没有损坏,那么网上那些关于重新intall 桌面的命令,全都可以忽略不计,因为药不对疾,我们要关注那些,修改主目录配置文件的命令,如:rm ~/.Xauthority等等的,这条命令只是参考,但意义很重要,下面会讲到。

那么问题又来了,既然~下的配置文件,我现在只是在fstab加了/home目录,还没有主目录,当然系统登入不了,于是在/home下, mkdir rainey/。这样主目录就设置好了,重启后,意料之中,一点变化也没有,为什么,因为没有.Xauthority这个配置文件,但是网上不说要删除这个文件,我这里反而要添加呢,原因我后面会讲到,我先来在~下添加这个文件(可以在/目录下搜索到这个文件,然后拷贝到你的主目录下),然后重启,情况是:可以登入桌面,但是是死的。就是说密码界面已经通过,桌面的控件没有激活,相当于死的。

这里就关系的权限问题了,ls -l /home ,你会发现你主目录所有者居然是root(即使fstab下我的挂在参数写的usr, 也还是以root权限挂上去,这个不知道ubuntu为什么要这么做),这自然有问题了,linux好就好在它的挂载系统,原来/home目录下文件还是存在,只不过没有挂在点而已。为了确认是不是权限问题,我把fstab下/home分区挂载的那句注掉,然后重启,系统会自动找到/分区下的/home目录(原先的默认home挂载点).

执行:ls -al,如图所示:

果然是rainey为所有者

那么回过来,重新将fstab下刚刚注释的那一行还原,重起后执行:

sudo chmod rainey:rainey /home/rainey

然后重启。顺利进入桌面。

回过头来想想,是不是我们一开始就用这个命令,或者用sudo chmod 777 /home/rainey 这样的命令,问题就会得到解决呢,也许吧,因为毕竟.Xauthority这个配置文件是自动生成,也许创建主目录后,直接改权限,能让我们少走弯路,读者自行尝试吧。

可是这次操作并未就此结束,因为主目录下很多配置文件都非常有用,很多我们开发用的环境配置都在里面,所以我打算还是把原来主目录下的.*这些配置文件都考到我新的主目录喜下,那么需要重新回到原来的主目录(方法上面已经讲到过),然后备份到其他分区(只要不在原来/home目录下就好),然后再这些备份的配置文件拷贝到新主目录下。但是是会发现,你很多应用程序不能跑,会报错,首先考虑的权限问题,很多目录都是root用户的,改为自己的用户。

虽然这样解决了大部分,程序报错的问题。但是我最主要环境AS(Android Studio)还是报错,说~/.AndroidStudio1.03/system/tmp/*.sh(具体名字太长忘了),这个文件权限不够,建议我重装,好,我听它的,重装as,坑爹,还是报一模一样的问题,那说明配置有问题。起初以为是这个sh文件的问题,于是自己写了个sh,发现也不能执行。说明不是文件问题。然后又发现/bin/bash *.sh就可以执行, ./*.sh就不行,于是尝试在PATH环境变量下加入./,结果发现还是不行。于是尝试把*.sh移动/目录下执行,发现./*.sh。顿时,豁然开朗,肯定是/home目录下,可执行权限配置跟其他目录不一样,但是/home下目录都是rainey用户的了啊,也都包含了x权限了啊。百思不得其解啊,挂载出现了问题,因为/home就挂载方式跟其他目录不一样,其他配置都一样啊。然后仔细回想挂载全过程,突然想到点了,fstab,对,就是一开始我提到后面会着重讲到那句挂载语句,挂载参数出了问题,亲们,以后挂载参数千万不能写rw啊(就算你把/home下所有东西都改成777,这一关也过不去啊),就因为这句话,整整让我折腾了一天啊。下面给出正确的挂载语句:

/dev/sdb8       /home                   ext4            errors=remount-ro               0       1

这句才是正解啊。辛苦一天,写点心得,即是教训,也是积累。

迁移/home目录至新硬盘分区总结--无备份情况下的更多相关文章

  1. Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205

    13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临 ...

  2. Oracle 无备份情况下的恢复--控制文件/数据文件

    13.3无备份恢复控制文件 没有备份恢复控制文件其实就是在nomount状态,create control创建一个新的控制文件. dba必须知道4个信息才能正确的创建:数据库名.在线日志路径及其大小. ...

  3. Oracle 无备份情况下的恢复--密码文件/参数文件

    13.1 恢复密码文件 密码文件(linux 为例)在$ORACLE_HOME/dbs目录下,文件名的前缀是orapw,后接数据库实例名. [oracle@DSI backup]$ cd /u01/a ...

  4. Oracle备份恢复之无备份情况下恢复undo表空间

    UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚, ...

  5. mysql数据文件迁移到新的硬盘分区的方法

    该系统增加了一个硬盘.要创建新的分区/data文件夹,mysql对于数据文件夹/var/lib/mysql 1.  停止mysql维修 [root@localhost~]# service mysql ...

  6. KVM虚拟机内无agent情况下的监控方法

    KVM虚拟机内无agent情况下的监控(ceilometer实现) 今天看到大家在群里讨论KVM虚拟机的监控问题,而且是要求VM内无agent情况下的监控.这方面确实没有深入研究,但尚有些openst ...

  7. 关于img标签浏览器自带的边框,清除边框的解决方式(即img[src=""] img无路径情况下,灰色边框去除解决方法)

    详解img[src=""] img无路径情况下,灰色边框去除解决方法 1.Js解决办法 <html> <head> <meta charset=&qu ...

  8. CentsOS7无网情况下安装mysql5.7

    1.需求就不用讲了,客户现场,政府环境,银行环境,大多是没网的,所以无网安装是很有必要的 mysql下载路径:https://dev.mysql.com/downloads/mysql/ 查看自己Li ...

  9. Kali Linux ——在无网络情况下安装无线网卡驱动

    1.背景: 今日刚刚开始学习kali linux,众所周知,安装完成后,系统是没有无线网卡驱动的,这就对学生党造成相当的困扰:校园网要连接有线是需要认证客户端的,而认证客户端只有windows端,如此 ...

随机推荐

  1. JS操作性能优化

    1. 适当使用变量 Maybe document.getElementById("myField").style.backgroundColor = "#CCC" ...

  2. JS之路——Math数学对象

    Math数学对象 ceil(数值)大于或等于该数的最小整数 floor(数值)小于或等于该数的最大整数 min(数值1,数值2)返回最小值 max(数值1,数值2)返回最大值 pow(数值1,数值2) ...

  3. OC中的@interface和java中的区别以及 @implementation @protocol

      java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时, ...

  4. oracle中的日期加减法

    --加法 ) from dual; --加1年 ) from dual; --加1月 ,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 ,'yyyy-mm-dd ...

  5. 手工走一次OPENSTACK安装,掉一层皮啊

    掉皮也是值得的,对OS的了解慢慢加深. 最近加入CS的Q群也学到不少.

  6. -_-#【Backbone】Router

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 附加数据库 对于 服务器“00-PC”失败

    错误消息: 标题: Microsoft SQL Server Management Studio------------------------------ 附加数据库 对于 服务器“LL-PC”失败 ...

  8. 酷派D530刷机指引之民间ROM

    为什么要刷民间ROM? 下图左边是官方ROM,右边是民间ROM,单单看"程序内存"这一项,这个问题的答案应该无需多言: 选择民间ROM就跟找对象一样,没有最好的,只有最适合自己的, ...

  9. 查看Linux发行版的名称和版本号

    Method #1: /etc/*-release file 在Terminal中执行命令: cat /etc/*-release 我的输出结果: DISTRIB_ID=Ubuntu DISTRIB_ ...

  10. LeetCode-Add Two Binary

    Add BinaryApr 2 '12 3558 / 10570 Given two binary strings, return their sum (also a binary string). ...