使用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
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
这样将会覆盖现有文件系统上的文件。
文章来源:Unixoss.com
转载请保留出处。