迁移/home目录至新硬盘分区总结--无备份情况下
搞了一天,终于成功迁移。由于一开始就没备份过程实在很曲折。
希望本篇对那些没有备份习惯的朋友们有所帮助。
准备工作:
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目录至新硬盘分区总结--无备份情况下的更多相关文章
- Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205
13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临 ...
- Oracle 无备份情况下的恢复--控制文件/数据文件
13.3无备份恢复控制文件 没有备份恢复控制文件其实就是在nomount状态,create control创建一个新的控制文件. dba必须知道4个信息才能正确的创建:数据库名.在线日志路径及其大小. ...
- Oracle 无备份情况下的恢复--密码文件/参数文件
13.1 恢复密码文件 密码文件(linux 为例)在$ORACLE_HOME/dbs目录下,文件名的前缀是orapw,后接数据库实例名. [oracle@DSI backup]$ cd /u01/a ...
- Oracle备份恢复之无备份情况下恢复undo表空间
UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚, ...
- mysql数据文件迁移到新的硬盘分区的方法
该系统增加了一个硬盘.要创建新的分区/data文件夹,mysql对于数据文件夹/var/lib/mysql 1. 停止mysql维修 [root@localhost~]# service mysql ...
- KVM虚拟机内无agent情况下的监控方法
KVM虚拟机内无agent情况下的监控(ceilometer实现) 今天看到大家在群里讨论KVM虚拟机的监控问题,而且是要求VM内无agent情况下的监控.这方面确实没有深入研究,但尚有些openst ...
- 关于img标签浏览器自带的边框,清除边框的解决方式(即img[src=""] img无路径情况下,灰色边框去除解决方法)
详解img[src=""] img无路径情况下,灰色边框去除解决方法 1.Js解决办法 <html> <head> <meta charset=&qu ...
- CentsOS7无网情况下安装mysql5.7
1.需求就不用讲了,客户现场,政府环境,银行环境,大多是没网的,所以无网安装是很有必要的 mysql下载路径:https://dev.mysql.com/downloads/mysql/ 查看自己Li ...
- Kali Linux ——在无网络情况下安装无线网卡驱动
1.背景: 今日刚刚开始学习kali linux,众所周知,安装完成后,系统是没有无线网卡驱动的,这就对学生党造成相当的困扰:校园网要连接有线是需要认证客户端的,而认证客户端只有windows端,如此 ...
随机推荐
- mysql 字符串拼接函数CANCAT()与GROUP_CANCAT()
1.CONCAT() 拼接单行字符串 select concat(‘100’,user_id) from table1; select concat('11','22','33'); 结果 11223 ...
- 下拉列表框 select 动态赋值
<tr> <td class="label">所属群组:</td> <td> <select name="group ...
- php设计模式之单例模式
单例模式顾名思义,就是只有一个实例.作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的要点有三个: 一是某个类只能有一个实例: 二是它必须自行 ...
- PHP实现动态生成饼状图、柱状图和折线图(转载)
PHP在图像操作方面的表现非常出色,我们只需借助可以免费得到的GD库便可以轻松实现图.表勾画.下面将分别介绍PHP实现的饼状图.折线图和柱状图以 及他们的使用方法,这几段代码的特点就是不需要再把它们复 ...
- python中的几种遍历列表的方法比较
python的内容非常丰富,给我们带来的便利很多,很多事情的表达方法有很大的多样性,比如我经常需要遍历一个列表,取它的下标和值,这个时候就有很多方法需要取舍一下才行. for循环遍历 l = [1,2 ...
- Spark笔记-treeReduce、reduce、reduceByKey
参考资料: http://stackoverflow.com/questions/32281417/understadning-treereduce-in-spark http://stackover ...
- Scut:SocketListener 的解析
大致浏览了一遍,Scut 的网络模型采用的是 SAEA 模型, 它是 .NET Framework 3.5 开始支持的一种支持高性能 Socket 通信的实现. 通过分析 Scut 的套接字监听控制, ...
- Android 判断当前网络连接类型
实际应用开发时,如果存在需要用户获取大量数据的情况,最好是先判断下网络类型,提示用户当前的网络类型,是否需要连接Wifi,etc.(手机流量太贵啦,当然土豪是无视这玩意的, (/ □ \)). 定义网 ...
- 单片机C语言编程规范
一.基本要求 1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行. 1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序. 1.3 尽量使用标准库函数和公共函数. 1.4 不要 ...
- 令人头痛的ExtJS日期时间控件
1 缘由 Ext提供了日期.时间的控件,但没有将日期和时间组合在一起的控件.在网上搜索时,有前辈创建或重写了时间相关的类,并提供了源码.不得不说那位作者对 extjs 框架理解得很透彻,虽然不知道他当 ...