LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 6392|回复: 20

做次gentoo不容易.我想做好之后做个备份应如何操作?

[复制链接]
发表于 2004-12-11 14:36:45 | 显示全部楼层 |阅读模式
RT.想做整个系统的备份.谢谢.
发表于 2004-12-11 15:21:41 | 显示全部楼层
 楼主| 发表于 2004-12-11 15:36:10 | 显示全部楼层
哈哈.谢谢.觉的应该转过来..^^
 楼主| 发表于 2004-12-11 15:40:42 | 显示全部楼层
joanphan兄转
有關系統備份(zt)
有關系統備份
作者:hauser
转自:http://forums.gentoo.org.tw/viewtopic.php?t=41975

大家都知道要做資料備份及設定檔的備份。但有沒有想過做整個系統的備份呢?例如自己不小心rm -rf或是chmod -R 777敲得太快後面打了/ 之後還沒?淼眉按蚰夸浘桶戳薊nter;系統被入侵;斷電導致整個硬碟完蛋;又或是系統被自己莫名其妙地搞壞了最終都不懂怎麼修?偷鹊取_@時候似乎只有重裝了,但Gentoo重裝可不是一件輕鬆的事喔!如果你做了整個系統的備份就不用怕了!Windows裡有Ghost,linux下有Partimage 和Mondorescue,但始終我還是覺得unix常見的工具反而是最具靈活性的。

用LiveCD或Knoppix開機,?K將根分區掛好:/mnt/gentoo。如果你的/boot,/usr用的是獨立的分區或硬碟,你必須把它們分別掛到/mnt/gentoo/boot ,/mnt/gentoo/usr等目錄裡。然後:
代碼:


quote:
--------------------------------------------------------------------------------

# cd /mnt/gentoo
# tar -cz --exclude-from /mnt/gentoo/root/exclude-list -pivO * | split -a 1 -b 700m - /path/to/mybackup.tar.gz-

--------------------------------------------------------------------------------



這樣會產生好幾個包mybackup.tar.gz-a, mybackup.tar.gz-b等等,每個最大700m(方便燒碟)。
exclude-list可以事先寫好,?似這樣:

usr/portage/distfiles
var/tmp/portage
home/yourusername/music
home/yourusername/video

?K放到你的gentoo分區的/root裡。
注意存放備份包的地方要有足夠的空間,如果在不同的分區,事先要掛好。
還原的時候,先要在有關的分區上重建檔案系統,?K象以上所說的那樣掛載好,然後:
代碼:

quote:
--------------------------------------------------------------------------------

# cd /mnt/gentoo
# cat /path/to/mybackup.tar.gz-* | tar xzvf -

--------------------------------------------------------------------------------


為什麼要用LiveCD啟動呢?這是因為運行中的系統?K非靜態,不應該簡單地去tar根目錄;有的程序如partimage甚至要求卸載備份的分區。當然也有可以在運行中的系統做完全備份的程序啦,Mondorescue就是一個例子;這些程序都頗為複雜,不過有興趣的朋友可以自己試試。

我自己有個分區裝了個後備系統。這樣每當其他系統出了問題,我不至於沒機子用。這個後備系統我平時很少用,更不會去瞎调;但我機子的grub是?倪@裡裝的,備份或搶修其他分區也是在這裡做的。這個後備系統本?硎荎noppix的硬碟安裝(因為現在Knoppix硬碟安裝?在是太容易了),不過我已經把它換成了gentoo了(已經有了備份就什麼都不用怕了)!
 楼主| 发表于 2004-12-11 15:43:50 | 显示全部楼层
gao_linfeng兄心得:
终于实现了压缩-分段-备份的目的。(重发)
我试了,的确好使,把情况写一下:
其本情况如下:
mount /dev/hda5 /mnt/a
mount /dev/hda6 /mnt/b
mount /dev/hda7 /mnt/c
mount /dev/hda8 /mnt/d
其中我的/mnt/a中有个大文件名叫foxabc,大小为1G,如果压缩的话可压缩至750兆左右,但该盘空间已满。/mnt/b盘空间有300兆,/mnt/c有200兆,/mnt/d有300兆。现在想把这个1G的大文件备份到这三个盘上,注意这三个盘总空间不够,所以必须在经过压缩后再备份,由于是三个盘,每个盘空间不足750兆,所以要分段或分割的方法才能实现。

实现方法如下:
tar -zcvf - /mnt/a/foxabc|dd of=/mnt/b/foxabc1.tgz bs=10k count=30000
tar -zcvf - /mnt/a/foxabc|dd of=/mnt/c/foxabc2.tgz bs=10k skip=30000 count=20000
tar -zcvf - /mnt/a/foxabc|dd of=/mnt/d/foxabc3.tgz bs=10k skip=50000 count=30000

经过如上的方法,可以在不借助于其它盘的情况下,先将目标文件压缩成750兆并输出至屏幕,再经由管道传给后面的dd命令,而这个压缩文件不用保留到任何盘上,因为已经再没有这样大的空间去存放这个压缩文件了,而后面的命令可以将这个压缩文件分段后再存入到hd6 hda7和hda8上,这样做的话就比一般的方法可以更容易实现!
因为按照一般的方法是先压缩后再用split等命令分割,可是这个压缩的文件本身放到哪里呢?已经没有空间可用了,所以依据现在的情况用这个方法是不行的,只能用我如上的方法实现。

说明"tar -zcvf"是为了打包并压缩,而后面的"-"是为了输出到屏幕而不是建立个新文件,再后面的“|”是管道,因为dd命令默认的if选项就是屏幕所以if就省略了,后面的bs skip count的命令要适当使用,这是为了能实现分段备份的。

再次感谢各兄弟们的帮忙我才能把这个实现,不过也有个小遗憾,我昨天试了一晚也没试成功如何用一条命令行去恢复这个文件呢?唯一的方法是将这三个文件先用dd命令合成一个完整的缩后文件放到盘上,然后再对这个文件解压,这样做是可行的,但这样做就能产生出一个压缩的文件,我的目标原本是在不产生压缩文件的情况去实现压缩备份与解压缩的........

=======================
对于上面的恢复方法也很简单,首先你进入你准备放恢复数据的目录中
cd 你想放文件的目录
cat /mnt/b/fox.tgz1 /mnt/c/fox.tgz2 /mnt/d/fox.tgz3|tar -zxvf -





***************************************************************************






akarc兄的方法:

前些天重灌 Gentoo,从 stage1->stage2->stage3->stageX ... 应为是从stage1开始编译,没日没夜的编译。  所以编译完stage1之后,我就在网上找备份的方法,以下是整个过程中参考的三个文档。

主要跟着这份文档(英文)
http://gentoo-wiki.com/HOWTO_Gentoo...ux_2.6_and_NPTL

(中文)
http://www.gentoo.org.tw/doc/gentoo...uickinstall.xml

再找到这份备份文档(英文)
http://gentoo-wiki.com/HOWTO_Custom_Stage4

里面有一个叫stage4的系统壳备份脚本,我把它中文化了(utf-8),见附件。

大家批评一下!

脚本:

#! /bin/bash
##  Backup script for Gentoo Linux
##  Author: BrianW
##  Author: Akar Chen (i18N -- zh)
##  i18N_Date: 2004.12.11
##  Date: 2004.10.26.
##  Adapted from backupHome.sh by fdavid
##  Adapted from mkstage4.sh by nianderson

## 这是系统壳脚本(bash),协助你建立整个系统的备份,(Gentoo的 stage4!! ^_^)
## 原作者说:他用来每星期备份,真的不敢效仿!! >_<
## @@译者是用这来备份 Gentoo stage1->stage2->stage3->stage4的基本系统建立过程的备份

## 一下是一些选项(配置),请把它改成适合您的需要!!
## -----------自定化区域!开始!-------------------

echo -=- 开始 备份...
echo -=- !注意! 记得先 根据您的系统的实际情况 来修改这脚本,来适合您的需要!!
echo -=-

echo -=- 初始化 各项选项(配置)。。。

## 备份档(steageX)的储存目录, 确记得要 “/” 在尾
stage4Location=/opt/gentoo/install/

## 备份档(steageX)的档案名。
archive=$stage4Location$(hostname)-stage4.tar.bz2

## 不需要备份的目录, 记得 !!不!!要 “/” 在尾。
dir_excludes="/dev /proc /sys /tmp /usr/src /usr/portage /var /opt /root /home"


## 不需要备份的文档, 可用  * !!
## 例:file_excludes="*.mpg *.rmvb"
file_excludes=""

## 脚本等待用户取消执行的时间 (秒)
sleeping=3
## 请改下一个,不要改上一个!!   --00--[ !妙招! 自夸一下 :-) ]--00--
sleeping=7

## -----------自定化区域 !终止!-------------------

## 合并不需要备份的 目录 和 文档。
excludes="$(echo -n "--exclude=$archive") $(for i in $dir_excludes; do if [ -d $i ]; then echo -n " --exclude=$i/*"; fi; done) $(for i in $file_excludes; do echo -n " --exclude=$i"; done)"

## 组合成 建立备份Trans的 tar 指令。
tarOptions="$excludes --create --absolute-names --preserve-permissions --bzip2 --verbose --totals --file"

echo -=- 完成 ,各项选项(配置)的 初始化!
echo -=-

##!译注! 因为我的 /boot 就在根分区上,所以把/boot的备份过程去掉了!! 详见原脚本。

##################################


## 建立 备份档。
echo -=- 建立 tar压缩备份档 tarball \=\=\> $archive
echo -=-
echo -=- 将在 $sleeping 秒 之后执行 这个备份指令:
echo -=- !!您现在仍可以用 Ctrl + C 来取消!!
echo -=- tar ${tarOptions} ${archive} /
sleep $sleeping

echo -=- 正在执行以上的备份指令:
tar ${tarOptions} ${archive} /;

echo -=- 备份完成


##  This is the end of the line.
## 本脚本的最后一行。
echo -=- 备份脚本执行 完成!





*************************************************************************




redsea兄的方法:
我是直接在当前运行系统中做备份, 需要先停止 udev 和 mysql.

udev 如果不停止, 备份出来的dev 目录不对,
mysql 不停止的话, 备份出来的数据有可能不完整.
解开的时候要 -p. 我解开的时候, 用 tar xvzfp.
我压缩的时候, 还用了一个 -l 参数, 不备份 root 文件系统之外的文件系统, 因为我平时mount 了很多东西.
压缩用的 script如下:

#!/bin/sh

# linux root. if is / then need not the slash
root=

# output file name
targetdir=/g

# file name
filename=debian_kde.tgz

echorun(){
echo $*
$*
}


echorun /etc/init.d/udev stop
echorun /etc/init.d/mysql stop

echorun rm ${targetdir}/$filename

echorun . ./clearlog

echorun tar cvzfl ${targetdir}/${filename} ${root}/ --exclude /tmp --exclude /proc --exclude /sys --exclude /var/cache/apt/archives --exclude /root/.opera/cache4 --exclude /root/.mozilla/firefox/default.to1/Cache
发表于 2004-12-11 15:52:36 | 显示全部楼层
总觉得这段:
  1. exclude-list可以事先寫好,?似這樣:usr/portage/distfiles
  2. var/tmp/portage
  3. home/yourusername/music
  4. home/yourusername/video
  5. ?K放到你的gentoo分區的/root裡。
复制代码

应该这样:
  1. exclude-list可以事先寫好,?似這樣:

  2. usr/portage/distfiles
  3. var/tmp/portage
  4. home/yourusername/music
  5. home/yourusername/video

  6. ?K放到你的gentoo分區的/root裡。
复制代码

会清楚点。
发表于 2004-12-11 16:16:19 | 显示全部楼层
这贴好,斑竹应该加精啊!
发表于 2004-12-11 20:50:27 | 显示全部楼层
已经精华了,呵呵
发表于 2004-12-11 21:50:25 | 显示全部楼层

一个自已也在用的 备份bash脚本

前些天重灌 Gentoo,从 stage1->stage2->stage3->stageX ... 应为是从stage1开始编译,没日没夜的编译。:confused: :%  所以编译完stage1之后,我就在网上找备份的方法,以下是整个过程中参考的三个文档。

主要跟着这份文档(英文)
http://gentoo-wiki.com/HOWTO_Gentoo_2004.2_for_linux_2.6_and_NPTL

(中文)
http://www.gentoo.org.tw/doc/gentoo-x86-quickinstall.xml

再找到这份备份文档(英文)
http://gentoo-wiki.com/HOWTO_Custom_Stage4

里面有一个叫stage4的系统壳备份脚本,我把它中文化了(utf-8),见附件。

大家批评一下!


  1. #! /bin/bash
  2. ##  Backup script for Gentoo Linux
  3. ##  Author: BrianW
  4. ##  Author: Akar Chen (i18N -- zh)
  5. ##  i18N_Date: 2004.12.11
  6. ##  Date: 2004.10.26.
  7. ##  Adapted from backupHome.sh by fdavid
  8. ##  Adapted from mkstage4.sh by nianderson

  9. ## 这是系统壳脚本(bash),协助你建立整个系统的备份,(Gentoo的 stage4!! ^_^)
  10. ## 原作者说:他用来每星期备份,真的不敢效仿!! >_<
  11. ## @@译者是用这来备份 Gentoo stage1->stage2->stage3->stage4的基本系统建立过程的备份

  12. ## 一下是一些选项(配置),请把它改成适合您的需要!!
  13. ## -----------自定化区域!开始!-------------------

  14. echo -=- 开始 备份...
  15. echo -=- !注意! 记得先 根据您的系统的实际情况 来修改这脚本,来适合您的需要!!
  16. echo -=-

  17. echo -=- 初始化 各项选项(配置)。。。

  18. ## 备份档(steageX)的储存目录, 确记得要 “/” 在尾
  19. stage4Location=/opt/gentoo/install/

  20. ## 备份档(steageX)的档案名。
  21. archive=$stage4Location$(hostname)-stage4.tar.bz2

  22. ## 不需要备份的目录, 记得 !!不!!要 “/” 在尾。 :(
  23. dir_excludes="/dev /proc /sys /tmp /usr/src /usr/portage /var /opt /root /home"


  24. ## 不需要备份的文档, 可用  * !!
  25. ## 例:file_excludes="*.mpg *.rmvb"
  26. file_excludes=""

  27. ## 脚本等待用户取消执行的时间 (秒)
  28. sleeping=3
  29. ## 请改下一个,不要改上一个!!   --00--[ !妙招! 自夸一下 :-) ]--00--
  30. sleeping=7

  31. ## -----------自定化区域 !终止!-------------------

  32. ## 合并不需要备份的 目录 和 文档。
  33. excludes="$(echo -n "--exclude=$archive") $(for i in $dir_excludes; do if [ -d $i ]; then echo -n " --exclude=$i/*"; fi; done) $(for i in $file_excludes; do echo -n " --exclude=$i"; done)"

  34. ## 组合成 建立备份Trans的 tar 指令。
  35. tarOptions="$excludes --create --absolute-names --preserve-permissions --bzip2 --verbose --totals --file"

  36. echo -=- 完成 ,各项选项(配置)的 初始化!
  37. echo -=-

  38. ##!译注! 因为我的 /boot 就在根分区上,所以把/boot的备份过程去掉了!! 详见原脚本。

  39. ######################################


  40. ## 建立 备份档。
  41. echo -=- 建立 tar压缩备份档 tarball \=\=\> $archive
  42. echo -=-
  43. echo -=- 将在 $sleeping 秒 之后执行 这个备份指令:
  44. echo -=- !!您现在仍可以用 Ctrl + C 来取消!!
  45. echo -=- tar ${tarOptions} ${archive} /
  46. sleep $sleeping

  47. echo -=- 正在执行以上的备份指令:
  48. tar ${tarOptions} ${archive} /;

  49. echo -=- 备份完成


  50. ##  This is the end of the line.
  51. ## 本脚本的最后一行。 :)
  52. echo -=- 备份脚本执行 完成!
复制代码

:cool:
发表于 2004-12-11 21:57:11 | 显示全部楼层

整个系统的备份脚本

这是系统壳脚本(bash),协助你建立整个系统的备份,(Gentoo的 stage4!! ^_^)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表