当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]将/home挂载到独立分区出错(已经解决)
帖子发表于 : 2007-01-21 12:33 

注册: 2007-01-10 22:31
帖子: 160
送出感谢: 0 次
接收感谢: 0 次
[问题]将/home挂载到独立分区出错

照坛子里的贴子,修改/etc/fstab文件将/home重新挂载到一个独立的分区。
重启登入时,提示找不到“$home/myname”,所以一个home开头的配置文件也找不到了。
于是只能欣赏登入界面了。


在安装的时候就想在Live CD下修改/etc/fstab文件,但是/分区一直忙,挂载不上,也卸载不了。

哪位有成功经验或是解决方法的,来说说吧。



写了一个脚本,兄弟们可以试一试,地址是:
http://forum.ubuntu.org.cn/viewtopic.ph ... highlight=



帖子的内容是:

引用:

[原创]自己写的,拿出来分享,有需要的兄弟尽管用。

前几天装Dubuntu,默认/home是在装/分区,我手工将它挂在了/dev/hda10上,
当时在LiveCD下用root用户执行cp -R命令将/home下的文件复制到/dev/hda10上,
重启登入时报错,/home的权限设置不对,无法登入。
最后是用( cd /mnt/du/home; tar -cvf - . ) | ( cd /mnt/hda10; tar -xvf - )命令复制
在复制文件的同时,目录结构,修改时间,权限等也一并复制了,重启,登入成功。

这个命令比较长,而且空格较多容易输错命令
于是想减化一个输入,便想到了写一个脚本。同时以后要用到时也方便、安全些。
正好最近在学shell编程,也是一个练手的机会。
这是我写的第二个脚本,第一次写的是删除openoffice.org的脚本,格盘时不小心格了。

在使用该脚本时有两种模式可选择,
一种是命令模式,这是最早的写的。当时的脚本只有几行,只是把两个参数嵌入”cd“的后面,没有提示,没有路径与目录的检测。
另一种是向导模式,主要是给初次接触Linux的新手用的。
既然写了就要写好,于是加入了不同的使用模式,”是否为绝对路径“、”是否为目录“的检测,帮助与错误提示等。

如果各位兄弟觉得有用,欢迎使用、传播。
注:SUN_Knight就是本人,年龄在增长,ID也在不断更新中,呵呵。



#! /bin/bash

#脚本名称:Xcopy.sh
#脚本作者:SUN_Knight
#脚本功能:将源目录的目录结构、权限、修改时间等完整的复制到目标目录。
#脚本备注:写这个脚本的目的有三个
# 1.练习写脚本
# 2.以后装Dubuntu等系统时,将/home单独挂载到一个分区时方便复制
# 3.方便以后需要完整复制时可以偷懒,嘿嘿
#
#最后还要感谢LinuxSir上lastart兄和stoneman兄的帮助
#lastart和stoneman两位兄弟分别提供了两种不同的"是否为绝对路径"的判断方法
#因为修改现有代码方便,最终采用了lastart兄弟的方案,再次表示感谢。

case "$#" in

#向导模式
0) echo "将要复制目录结构"
echo "请输入源目录绝对路径:"
read s_dir
echo "请输入目标目录绝对路径:"
read d_dir
while [ $# -eq 0 ]
do
if [ "${s_dir#/}" = "${s_dir}" ]
then
echo "错误的输入:"
echo " $s_dir不是绝对路径"
if [ "${d_dir#/}" = "${d_dir}" ]
then
echo " $d_dir不是绝对路径"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
fi
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
else
if [ "${d_dir#/}" = "${d_dir}" ]
then
echo "错误的输入:"
echo " $d_dir不是绝对路径"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
else
if [ -d $s_dir ]
then
if [ -d $d_dir ]
then
echo "请确认:"
echo "您将要把$s_dir目录完整复制到$d_dir目录中"
echo "yes/no?"
read yn
if [ $yn = "yes" ]
then
( cd $s_dir; tar -cvf - . ) | ( cd $d_dir; tar -xvf - )
break
elif [ $yn = "no" ]
then
break
else
echo "您的输入:${yn}不正确"
continue
fi
else
echo "错误的输入:"
echo " $d_dir不是目录"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
fi
else
echo "错误的输入:"
echo " $s_dir不是目录"
if [ -d $d_dir ]
then
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
else
echo " $d_dir不是目录"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
fi
fi
fi
fi
done
;;

#命令模式
2) if [ "${s_dir#/}" = "${s_dir}" ]
then
echo "错误的输入:"
echo " $s_dir不是绝对路径"
if [ "${d_dir#/}" = "${d_dir}" ]
then
echo " $d_dir不是绝对路径"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
else
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
fi
else
if [ "${d_dir#/}" = "${d_dir}" ]
then
echo "错误的输入:"
echo " $d_dir不是绝对路径"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
else
if [ -d $1 ]
then
if [ -d $2 ]
then
( cd $1; tar -cvf - . ) | ( cd $2; tar -xvf - )
else
echo "错误的输入:"
echo " $2不是目录"
echo "请您使用以下命令查看帮助:"
echo "Xcopy.sh help"
fi
else
echo "错误的输入:"
echo " $1不是目录"
if [ -d $2 ]
then
echo "请您使用以下命令查看帮助:"
echo "Xcopy.sh help"
else
echo " $2不是目录"
echo "请您使用以下命令查看帮助:"
echo "Xcopy.sh help"
fi
fi
fi
fi
;;

#帮助与错误提示
*) if [ $# -eq 1 ]
then
if [ $1 = "help" ]
then
echo "Xcopy.sh 帮助:"
else
echo "错误的参数!"
fi
else
echo "错误!"
fi
echo "Xcopy.sh [[参数]|[源目录 目标目录]]"
echo "Xcopy.sh 向导模式"
echo "Xcopy.sh help 查看帮助"
echo "Xcopy.sh 源目录 目标目录 命令模式"
;;
esac

引用:
#! /bin/bash

#脚本名称:Xcopy.sh
#脚本作者:SUN_Knight
#脚本功能:将源目录的目录结构、权限、修改时间等完整的复制到目标目录。
#脚本备注:写这个脚本的目的有三个
# 1.练习写脚本
# 2.以后装Dubuntu等系统时,将/home单独挂载到一个分区时方便复制
# 3.方便以后需要完整复制时可以偷懒,嘿嘿
#
#最后还要感谢LinuxSir上lastart兄和stoneman兄的帮助
#lastart和stoneman两位兄弟分别提供了两种不同的"是否为绝对路径"的判断方法
#因为修改现有代码方便,最终采用了lastart兄弟的方案,再次表示感谢。

case "$#" in

#向导模式
0) echo "将要复制目录结构"
echo "请输入源目录绝对路径:"
read s_dir
echo "请输入目标目录绝对路径:"
read d_dir
while [ $# -eq 0 ]
do
if [ "${s_dir#/}" = "${s_dir}" ]
then
echo "错误的输入:"
echo " $s_dir不是绝对路径"
if [ "${d_dir#/}" = "${d_dir}" ]
then
echo " $d_dir不是绝对路径"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
fi
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
else
if [ "${d_dir#/}" = "${d_dir}" ]
then
echo "错误的输入:"
echo " $d_dir不是绝对路径"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
else
if [ -d $s_dir ]
then
if [ -d $d_dir ]
then
echo "请确认:"
echo "您将要把$s_dir目录完整复制到$d_dir目录中"
echo "yes/no?"
read yn
if [ $yn = "yes" ]
then
( cd $s_dir; tar -cvf - . ) | ( cd $d_dir; tar -xvf - )
break
elif [ $yn = "no" ]
then
break
else
echo "您的输入:${yn}不正确"
continue
fi
else
echo "错误的输入:"
echo " $d_dir不是目录"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
fi
else
echo "错误的输入:"
echo " $s_dir不是目录"
if [ -d $d_dir ]
then
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
else
echo " $d_dir不是目录"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
break
fi
fi
fi
fi
done
;;

#命令模式
2) if [ "${s_dir#/}" = "${s_dir}" ]
then
echo "错误的输入:"
echo " $s_dir不是绝对路径"
if [ "${d_dir#/}" = "${d_dir}" ]
then
echo " $d_dir不是绝对路径"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
else
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
fi
else
if [ "${d_dir#/}" = "${d_dir}" ]
then
echo "错误的输入:"
echo " $d_dir不是绝对路径"
echo "因为您错误的输入,程序将退出。"
echo "您可以检查正确的输入后重新运行本程序。"
else
if [ -d $1 ]
then
if [ -d $2 ]
then
( cd $1; tar -cvf - . ) | ( cd $2; tar -xvf - )
else
echo "错误的输入:"
echo " $2不是目录"
echo "请您使用以下命令查看帮助:"
echo "Xcopy.sh help"
fi
else
echo "错误的输入:"
echo " $1不是目录"
if [ -d $2 ]
then
echo "请您使用以下命令查看帮助:"
echo "Xcopy.sh help"
else
echo " $2不是目录"
echo "请您使用以下命令查看帮助:"
echo "Xcopy.sh help"
fi
fi
fi
fi
;;

#帮助与错误提示
*) if [ $# -eq 1 ]
then
if [ $1 = "help" ]
then
echo "Xcopy.sh 帮助:"
else
echo "错误的参数!"
fi
else
echo "错误!"
fi
echo "Xcopy.sh [[参数]|[源目录 目标目录]]"
echo "Xcopy.sh 向导模式"
echo "Xcopy.sh help 查看帮助"
echo "Xcopy.sh 源目录 目标目录 命令模式"
;;
esac



如果哪位兄弟对上面的脚本有改进,请发一份给我,只有不断学习才能进步,谢谢。
我的邮箱是:superspecter007@yhaoo.com.cn
同时请您在修改、传播时保留致谢部分。


最后由 superspecter007 编辑于 2007-01-26 13:13,总共编辑了 2 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-01-21 16:40 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
文件要先全部复制到独立分区。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-01-21 18:21 

注册: 2007-01-10 22:31
帖子: 160
送出感谢: 0 次
接收感谢: 0 次
复制了,没用。

刚才用命令解决了。
( cd /home; tar -cvf - . ) | ( cd /media/hda10; tar -xvf - )

碰上这个问题的兄弟可以试试。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译