对系统进行备份是运维的重点,可以节省系统因异常崩溃而恢复的精力,同是避免重要数据丢失。
0.1. 系统的备份
简单来说,系统的备份就是把分区上的所有内容都打包到一个TAR文件里。
脚本如下:
#预定义
rq=`date +%Y%m%d-%H%M%S`
system_server_ip=106-15-226-150
backup_file_base_path=/usr/local/system_backups/local/
#准备系统备份文件储存信息
dump_tar_file_name='system_backup_'${system_server_ip}'_'${rq}.tgz
current_backup_file_path_str=${backup_file_base_path}${rq}'/'
cd ${backup_file_base_path}
mkdir ${current_backup_file_path_str}
backup_file_localPath=${current_backup_file_path_str}${dump_tar_file_name}
#打包备份文件
cd /
tar cvpzf ${backup_file_localPath} --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/usr/local/system_backups/local --exclude=/usr/local/system_backups/remote --exclude=/usr/local/mysqlDB_dumps_remote --exclude=/media /
这里的关键语句是:
#打包备份文件
cd /
tar cvpzf ${backup_file_localPath} --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/usr/local/system_backups/local --exclude=/usr/local/system_backups/remote --exclude=/usr/local/mysqlDB_dumps_remote --exclude=/media /
--exclude
表示备份时须排除在外的目录。
有些目录是无用的,例如/proc、/lost+ found、/sys
。
当然,备份系统打包生成的tar文件本身必须排除在外,否则可能会得到一些超出常理的结果。
如果不把/mnt
排除在外,那么挂载在/mnt
上的其它分区也会被备份。
另外需要确认一下/media
上没有挂载任何东西(例如光盘、移动硬盘),如果有挂载东西,必须把/media
也排除在外。
备份完成后,在文件系统的指定的${backup_file_base_path}
目录将生成一个名为${dump_tar_file_name}
的文件,这个文件的尺寸有可能非常大。现在你可以把它烧录到DVD上或者放到你认为安全的地方去。
0.2. 系统的恢复
如果服务器的Ubuntu系统已经崩溃,无法进入。则可以使用Ubuntu安装U盘(live USB)进入试用Ubuntu界面。
切换到root用户,找到之前Ubuntu系统的根目录所在磁盘分区(一般电脑上的磁盘分区(假设分区名称为sdaX)均可以在当前Ubuntu系统的根目录下的media
目录下(即/media
)找到。目录通常为当前根目录下 cd /media/磁盘名称/分区名称
)。
进入该分区,输入以下指令来删除该根目录下的所有文件:
sudo rm -rf /media/<磁盘名称>/<分区名称*>
将备份文件
${dump_tar_file_name}
拷入该分区:sudo cp -i ${dump_tar_file_name} /media/<磁盘名称>/<分区名称*>
进入分区并将压缩文件解压缩,参数x是告诉tar程序解压缩备份文件:
sudo tar xvpfz ${dump_tar_file_name}
重新创建那些在备份时被排除在外的目录;
sudo mkdir proc lost+found mnt sys media
或
mkdir proc mkdir lost+found mkdir mnt mkdir sys
此时重启电脑,服务器的一切内容将恢复到选定备份的状态。