LinuxSir.cn,穿越时空的Linuxsir!

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

请问怎样可以让debian回到刚刚装好的基本系统的状态,?

[复制链接]
发表于 2005-10-19 18:03:14 | 显示全部楼层 |阅读模式
有这样的命令吗?
发表于 2005-10-19 18:07:33 | 显示全部楼层
晕,没有人会设计这样的指令吧。
你可以装个包管理软件看看,没用的就删吧
回复 支持 反对

使用道具 举报

发表于 2005-10-19 18:35:55 | 显示全部楼层
安装好系统做一个备份。

Backup your Linux System | 备份你的 Linux 系统
日期:2005-07-08   来源: http://linux.dalouis.com/   作者: Kreny

一、我们需要备份什么?

我的 Linux 系统是基于 Redhat 的Redhat Linux 9.0,同时配置了诸如 MySQL、PHP、Apache 等基础服务,同时又配有 Awstats、MRTG、MT 等应用服务程序,因此,我们需要备份的除了系统本身的重要文件以外,还需要备份数据库、log文件和统计数据文件等。当然另外一项必不可少的就是编译各项服务时的 ./configure 参数,这里就不赘述了。

二、制定备份文件列表。

这个步骤就是归纳一下需要备份的目录列表。以下我就依照我所安装的各项服务作了一个简单的list。 一些文件的地址是以我的服务器为标准(以"/"开头),一些则以相对目录来描述(以"./"开头)。

系统:
# /etc /usr/local/etc
包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。
# /var
包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
# /home
包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。
# /root
是根(root)用户的主目录。
# /opt
是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。

系统中不需要备份的目录:
# /proc
应该永远不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图。它包括诸如 /proc/kcore 这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。
# /dev
包含硬件设备的文件表示。如果计划还原到一个空白的系统,那就可以备份 /dev。然而,如果计划还原到一个已安装的 Linux 系统,那么备份 /dev 是没有必要的。

更多关于目录的解释,请查看 Filesystem Hierarchy Standard 和 Red Hat Linux Overview of File System Hierarchy Standard (FHS)

MySQL:
# /usr/local/mysql
同时要注意版本的保留,在恢复的时候使用相同的版本(或者相同系列的版本)会减少更多不必要的麻烦,例如 “/usr
/local/mysql-standard-4.1.7-pc-linux-i686”。
# /etc/my.cnf
MySQL 的配置文件。

Apache:
# /usr/local/apache2/logs
Apache 的 log 文件。这里建议使用 cronolog 来 rotate Apache 的巨大 log。可以参考我的 cronolog 杂记
# /usr/local/apache2/conf
Apache 的配置文件,例如: httpd.conf。还是建议在修改此文本的时候使用“#”号 comment 修改的内容,然后添加需要修改的内容。

PHP:
# /usr/local/lib/php.ini
个人觉得这个就够了。如果你设定了 php 的 error log 文件,当然那个也是需要的。

Movable Type:
# ./MT-3.0D-full-en_ususr/ 和你的 weblog 目录
一般来说 blog 不会太大,不介意的话就整个备份一下。当然最重要的是 ./MT-3.0D-full-en_ususr/db/ 文件夹,里面有所有的数据(如果你没有用 MySQL 作为 MT 的数据存储格式的话)。

Awstats:
# /etc/awstats/
Awstats 的配置文件。诸如:awstats.blog.conf
# /var/lib/awstats/
Awstats 的分析留档文件。 诸如:awstats082004.blog.txt

MRTG:
# MRTG 的输出文件夹。内有图片和诸如 12.34.56.78_12.34.56.78.log 的log文件。

三、使用 tar 和 crontab 等简单工具备份。

以下是使用 tar 的脚本,去掉了多余的说明部分。 您也可以点击这里下载并修改以适合自己的系统。在脚本中我尽量用更多的方法来进行备份。在实际应用中可以将步骤更加简化。更多关于 tar 的参数请看 man tar

    #!/bin/sh

    # Date format: 20040626
    DATE=`date -d yesterday +%Y%m%d`

    # MySQL version & directory
    MYSQL_VERSION="4.x.x"
    MYSQL_DIR="/usr/local/mysql/data"

    # MT Blog directory
    MTBLOG_DIR="/path-to-mt/db/"

    # Backup directory & Backup Filelist
    BACKUP_DIR="/path-to-backup/backupfile"
    BACKUP_FILELIST="/path-to-backup/filelist"

    # Backup MySQL
    printf "Backup MySQL data directory, please wait...\n"
    tar -zpcvPf $BACKUP_DIR/mysql-standard-$MYSQL_VERSION-data-$DATE.tgz $MYSQL_DIR | grep "tar:"
    printf "Done! The new backup file is: $BACKUP_DIR/mysql-standard-$MYSQL_VERSION-data-$DATE.tgz\n\n"

    # Backup MT Blog
    printf "Backuping the MT3.0 Weblog data directory, please wait...\n"
    tar -zpcvPf $BACKUP_DIR/MT-db-$DATE.tgz $MTBLOG_DIR | grep "tar:"
    printf "Done! The new backup file is: $BACKUP_DIR/MT-db-$DATE.tgz\n"

这里引用了『Linux 备份与恢复速成指南』中的一个小技巧,将文件列表写入一个文件进行操作。查看我的Filelist。

以下是一个文件列表的例子:

    /etc
    /var
    /home
    /usr/local
    /opt (有时会是空目录)

以下解释引自『Linux 备份与恢复速成指南』:

请注意 tar -T(或 files-from)命令不能接受通配符。文件必须明确地列出。上面的例子展示了一种单独地引用文件的方法。您还可以执行脚本来搜索系统,然后建立一个列表。下面就是这样一个脚本的例子:

    #!/bin/sh
    cat MyFiles > TempList
    find /usr/share -iname *.png >> TempList
    find /tmp -iname *.iso >> TempList
    tar -cpzMf /path-to-backup/backupfile -T TempList

上面的脚本首先将 MyFiles 中的所有现有文件列表复制到 TempList。然后它执行两个 find 命令来搜索文件系统中匹配某个模式的文件,并将它们附加到 TempList。第一次是搜索 /usr/share 目录树中以 .png 结尾的所有文件。第二次是搜索 /tmp 目录树中以 .iso 结尾的所有文件。在建立好列表之后,tar 然后在文件设备 /dev/st0 (第一个 SCSI 磁带设备)上创建 一个新的归档文件,该文件使用 gzip 格式来压缩,并保留所有文件权限。该归档文件将跨越多个卷。要归档的文件的名称将从 TempList 文件中提取。

四、适用于 log 和数据库的增量备份(incremental backup)。

对于庞大的 log 或者 数据库文件,每天进行完全备份似乎不是很能合理高效地实现备份工作。所以在较短的时间周期内,适用增量备份(incremental backup)会是一个不错的选择。

tar 并不是最好的增量备份工具

tar 并不是最好的增量备份的工具,但是它也可以实现增量备份。参照 『The tar backup program』中的脚本可以实现这个操作。

简单地介绍一下其原理:
首先,制作一个完全备份的时间点文件,例如 "full-date"。其中写入某次完全备份的时间点,例如 echo $NOW > full-date。
然后在自定的时间循环期内(例如一周),每次和完全备份时间点(full-date)对比后进行增量备份。
其中最关键的一个语句就是:

    tar --newer $full-date -zcpf $BACKUPDIR/$BACKUPFILE-$NOW.tgz $DIRECTOIES

其结果就是,在一周中会产生 6 个独立文件,其内容是前一天内新增的内容。以下是一个例子:

    [root@deep] /# ls -l /backups/

    total 22217
    -rw-r--r-- 1 root root 10731288 Feb 7 11:24 deep-01Feb.tar << 每月月初一次完全备份
    -rw-r--r-- 1 root root 6879 Feb 7 11:24 deep-Fri.tar << 每天的增量备份
    -rw-r--r-- 1 root root 2831 Feb 7 11:24 deep-Mon.tar
    -rw-r--r-- 1 root root 7924 Feb 7 11:25 deep-Sat.tar
    -rw-r--r-- 1 root root 11923013 Feb 7 11:24 deep-Sun.tar << 每周一次完全备份
    -rw-r--r-- 1 root root 5643 Feb 7 11:25 deep-Thu.tar
    -rw-r--r-- 1 root root 3152 Feb 7 11:25 deep-Tue.tar
    -rw-r--r-- 1 root root 4567 Feb 7 11:25 deep-Wed.tar
    drwxr-xr-x 2 root root 1024 Feb 7 11:20 last-full

tar 中几个开关的简介:
# The c option specifies that an archive file is begin created.
# The p option preserves permissions; file protection information will be remembered.
# The N or newer option does an incremental backup and only stores files newer than DATE.
# The f option states that the very next argument will be the name of the archive file or device being written.
# The z option specifies that an gzip file will be created.
# The u option can APPEND more files to a tarball file.
注意:-u 开关并不是增量备份,而是往原有的 tar 包里面添加新的文件。

fbackup is a better choice

在 HP 的论坛上,有关于增量备份的讨论--“Incremental "tar" Backup in HP-Ux”。但是因为我不是 HP 的系统,tar 已经可以满足现有的备份需求。

五、使用 ssh 实现安全网络远程备份。

[很抱歉,此段笔者没有试验环境,现在之能添加几篇关于 ssh 远程传送的文章。等到经过试验后,我会添加具体内容。]

# 33.8. Backing up and restoring over the network
# 轻松进行自主的、安全的、分布式网络备份

六、个人使用的 e-mail 简单备份。

由于 Yahoo!、Google、Hotmail 相继推出了 1-2G 的邮箱,因此可是试着使用带有文件附件的 E-mail 来传输小于各个邮箱的单封信件上限大小的文件。 具体需要用到一些诸如 uudecode 的命令,所以需要先安装一个 Sharutils 。 我在编译中遇到一些简单的错误,这里是我修改过的 Sharutils。

在命令行下发送带附件的邮件时,还是建议使用诸如 MUTT 的 MUA,请查看我的 MUTT 的安装失败经历,也许对新装的用户有所帮助。

安装完毕后,可以使用 Mutt 的命令行一行解决问题。首先先写一个邮件文本 mailcontent.txt。

    # cat mailcontent.txt | mutt -s "mailtitle" -a attachfile1 mail@address

结合上面的 shell 脚本,如果你有企业级邮箱的话,不妨也试试这种方法。仅供参考。

参考文档:

# 『Windows 到 Linux 之旅:第 8 部分. 备份与恢复 之 Linux 备份与恢复速成指南』

# 『在 Linux 上进行自动备份--轻松进行自主的、安全的、分布式网络备份』

# 『在文字模式下用mail如何将文件以附件方式发送』

# W. Curtis Preston (2003)《Unix Backup & Recovery》

# 『Filesystem Hierarchy Standard』

# 『Red Hat Linux Overview of File System Hierarchy Standard (FHS)』

# 《Securing and Optimizing Linux - A Hands on Guide (Red Hat Edition)》 一书的 第 7 章“备份和还原”是另一份不错的指南,其中包括一个脚本,用于执行基于 tar 的增量备份(incremental backup)。
回复 支持 反对

使用道具 举报

发表于 2005-10-19 18:42:07 | 显示全部楼层
我一般喜欢备份辛苦下载的升级文件。
这也是一个最简单的备份吧。

#!/bin/sh
#Filename:backup

DIRS="/var/cache/apt/archives"
BACKUP="/home/yourname/backup/update/aptbackup.tgz"

tar -c $DIRS | gzip -9 > $BACKUP
回复 支持 反对

使用道具 举报

发表于 2005-10-20 19:14:44 | 显示全部楼层
重装一遍不就得了?
回复 支持 反对

使用道具 举报

发表于 2005-10-20 19:23:45 | 显示全部楼层
我不小心用apt-get 删除了一个库文件就回到那个状态了...嘿嘿,具体是什么我也不记得了.不过你还可以试试执行base-config然后取消选择所有的文件好像也可以删除第一次启动系统时用base-config安装的文件,但好像自己安装的文件用这种办法不行!
回复 支持 反对

使用道具 举报

发表于 2005-10-20 22:49:09 | 显示全部楼层
最好重装一次系统吧
那样会快一些
而且干净
如果你改过了一些文件
删掉时会提示改过不上你删
如果软件少还成
如果有很多软件要删就麻烦点
我想重装tetex3.0就觉得挺麻烦
没办法把有关TeX的东西都删掉
再装一次
哈哈
其实重装一次也很快,只要你备份相应的配置文件记住你重装后还要装什么东西就行了
回复 支持 反对

使用道具 举报

发表于 2005-10-21 01:01:42 | 显示全部楼层
debootstrap建立一个基系统,再chroot过去
回复 支持 反对

使用道具 举报

发表于 2005-10-21 01:47:49 | 显示全部楼层
说实话,无法恢复到刚刚安装好的状态,因为你的机器在安装其他的软件时,有时会额外下载其他的库文件
软件都还好卸载,不过那些库文件用一般的手法是无法卸载的,因为包管理工具无法判断那些文件是需要的
那些文件是不需要的,如果楼主需要一个小的系统来完成某项任务的话,可以考虑使用现有系统架设虚拟系统
比如架设一个含有apache功能的虚拟系统,这样提供的既能保障apache的正常功能,又不至于让一些潜在
的破坏者通过破坏你的apache服务器从而使你的真实系统遭受很大的损失
回复 支持 反对

使用道具 举报

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

本版积分规则

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