使用tar工具对Linux服务器进行简单备份

环境:Ubuntu 10.04 32位 服务器版本

一个简单的Shell脚本

使用Shell脚本是备份系统的一种最简单方法。比如,一个Shell脚本可以用来设置备份哪个目录,并且指定使用tar工具来创建那些数据的档案文件。然后这些创建的档案文件就可以移动或者复制到其它地方。

tar工具将许多文件和目录归到一个文件中,还可以通过压缩来减小文件占用的空间。

使用vi创建一个backup.sh脚本(其中 /home/liubing 是当前用户的目录):

$ vi backup.sh

输入下面Shell脚本:

#!/bin/sh
####################################
#
# Backup script.
#
####################################

# What to backup.
backup_files="/home /var/www /root /boot /opt"

# Where to backup to.
dest="/home/liubing"

# Create archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
date
echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo
echo "Backup finished"
date

# Long listing of files in $dest to check file sizes.
ls -lh $dest

        $backup_files: 你需要备份的目录的列表,可以根据自己的需要定制。

        $day: 用来显示这个备份是一周中的哪一天创建的(周一,周二……)。

        $hostname: 包含简短主机名的变量,用来分辨不同主机创建的日常备份文件。

        $archive_file: 完整的档案文件名。

        $dest: 归档文件保存的目录。

        状态信息:使用echo程序打印到屏幕上的消息。

        tar czf $dest/$archive_file $backup_files: 用来创建档案文件的tar命令

                c: 创建一个档案文件

                z: 使用gzip程序压缩档案文件

                f: 使其输出成一个文件。否则将使用标准输出,不会生成文件。

        ls -lh $dest: 可选的声明,用来输出目标目录的详细信息并且是以人类可读的格式显示。可以方便的检测文件大小,但是不能替代档案文件测试。

执行脚本

最简单的执行上面的备份脚本的方法便是输入命令:

$ sudo bash backup.sh

备份输出

使用cron工具自动运行脚本

cron守护进程容许脚本和命令在特定的日期时间执行。

cron通过一个叫做crontab的文件中的条目来配置

# m h dom mon dow command

        m: 命令在几分执行( 0~59 )。

        h: 命令在几点执行( 0~23 )。

        dom: 命令在一个月中的哪天执行。

        mon: 命令在哪个月执行( 1~12 )。

        dow:一周中的哪天执行( 0~7 )。

        command: 需要执行的命令。

使用crontab -e可以增加或者修改crontab文件,同时crontab文件的内容也可以使用crontab -l命令查看。

要让backup.sh使用cron,在终端中输入:

$ sudo crontab -e

crontab -e命令通过使用sudo来修改root用户的crontab,这样就可以备份只有root用户才有权限的目录。

在crontab文件中增加下面的条目:

# m h dom mon dow command

  0 0  *   *   *  /usr/local/bin/backup.sh

编辑crontab文件

backup.sh现在将会在每天0点自动执行。

backup.sh脚本需要被复制到/usr/local/bin/目录来使其正确执行。也可以修改相应的路径,来使脚本保存到文件系统的任何地方。

从存档恢复

一个存档被创建以后,一件重要的事便是测试。测试有很多方法,你可以列出它包含的文件,但是最好的方法是从存档中恢复文件。

从终端中查看存档文件的列表:

$ tar -tzvf /home/liubing/www-Wednesday.tgz

恢复存档的文件到一个指定的目录:

$ tar -xzvf /home/liubing/www-Wednesday.tgz -C /tmp var/www/themes

-C选项使tar释放文件到指定的目录,这个例子将释放/var/www/themes目录到/tmp/var/www/themes目录。tar会创建不存在的目录。

注意:var前面不需要加 / 。

要恢复全部存档文件,使用以下命令:

$ cd /
$ sudo tar -xzvf /mnt/backup/host-Monday.tgz

这样将会覆盖现有文件系统上的文件。

 

原文:Ubuntu Documentation >>Shell Scripts

文章来源:Unixoss.com

转载请保留出处。

posted on 2010-12-16 18:48  Candyroot  阅读(354)  评论(0编辑  收藏  举报