linux 系统如何备份,系统日志如何备份?

linux 系统如何备份,系统日志如何备份?,第1张

备份系统

我该如何备份我的Ubuntu系统呢?很简单,就像你备份或压缩其它东西一样,使用TAR。和Windows不同,Linux不会限制root访问任何东西,你可以把分区上的所有东西都扔到一个TAR文件里去!

首先成为root用户:

$ sudo su

然后进入文件系统的根目录(当然,如果你不想备份整个文件系统,你也可以进入你想要备份的目录,包括远程目录或者移动硬盘上的目录):

# cd /

下面是我用来备份系统的完整命令:

# tar cvpzf backup.tgz –exclude=/proc –exclude=/lost+found –exclude=/backup.tgz –exclude=/mnt –exclude=/sys /

让我们来简单看一下这个命令:

“tar”当然就是我们备份系统所使用的程序了。

“cvpfz”是tar的选项,意思是“创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”。

“backup.gz”是我们将要得到的档案文件的文件名。

“/”是我们要备份的目录,在这里是整个文件系统。

档案文件名“backup.gz”和要备份的目录名“/”之间给出了备份时必须排除在外的目录。有些目录是无用的,例如“/proc”、“

/lost+found”、“/sys”。当然,“backup.gz”这个档案文件本身必须排除在外,否则你可能会得到一些超出常理的结果。如果不把“

/mnt”排除在外,那么挂载在“/mnt”上的其它分区也会被备份。另外需要确认一下“/media”上没有挂载任何东西(例如光盘、移动硬盘),如果

有挂载东西,必须把“/media”也排除在外。

有人可能会建议你把“/dev”目录排除在外,但是我认为这样做很不妥,具体原因这里就不讨论了。

执行备份命令之前请再确认一下你所键入的命令是不是你想要的。执行备份命令可能需要一段不短的时间。

备份完成后,在文件系统的根目录将生成一个名为“backup.tgz”的文件,它的尺寸有可能非常大。现在你可以把它烧录到DVD上或者放到你认为安全的地方去。

在备份命令结束时你可能会看到这样一个提示:’tar: Error exit delayed from previous errors’,多数情况下你可以忽略它。

你还可以用Bzip2来压缩文件,Bzip2比gzip的压缩率高,但是速度慢一些。如果压缩率对你来说很重要,那么你应该使用Bzip2,用“j”代替命令中的“z”,并且给档案文件一个正确的扩展名“bz2”。完整的命令如下:

# tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclude=/mnt –exclude=/sys /

2、系统日志备份

只需要将日志文件移动到备份目录下

然后将日志压缩打包,并删除日志文件

最后重建日志文件

#!/bin/b.sh

#

nginx_app=/usr/local/nginx/sbin/nginx

logs_dir=/usr/local/nginx/logs

bak_dir=/tmp/logbak/

date=`date +%Y%m%d`

#

#先将日志文件移动到备份目录

cd $logs_dir

echo “moving logs”

mv *.log $bak_dir

sleep 3

#

#重建log文件

echo “rebuild logs”

echo “$nginx_app -s reopen”

$nginx_app -s reopen

#

#打包log文件,并以日期命名

echo “tar log”

cd $bak_dir

tar czf $date.tgz *.log

#

#删除备份目录的临时文件

echo “rm logs”

rm -f *.log

echo “done”

然后添加个计划任务,比如每天凌晨4点半执行,脚本位置在/root/logbak.sh

crontab -e

30 4 * * * sh /root/logbak.sh

在脚本nohup设置每天开始拷贝日志作为前一天的日志备份,然后把当前日志清空即可,代码如下:

crontab -e

//增加:

0 0 * * *  cp /dirname/logfile.log /bakdir/logfile.`date -d yesterday +%Y%m%d`.log cat /dev/null > /dirname/logfile.log

//每周日凌晨1:00打包、删除文件:

0 1 * * 0 cd /bakdir find ./ +mtime 7 -exec tar cvf logfile.`date -d yesterday +%Y%U`.tar {} \ find ./ -mtime 91 -exec rm -f {} \

1、比如每天产生一个/data/access.log这样的文件,我们每天备份到backup目录的access_2011-01-12.log.gz这样的文件。

2、增加计划任务

export

EDITOR=vi

crontab

-e

0

0

*

*

*

/data/bak.sh

3、bak.sh文件内容如下:

cat

/data/bak.sh

#!/bin/bash

logs_dir=/data

bak_dir=/data/backup

bak_file=access_`date

+%Y%m%d`.log

#

tar

everyday

#echo

"begining

of

tar"

tar

zcf

$bak_dir/$bak_file.gz

$logs_dir/access.log

#

clear

bak_file

#echo

"clearing

file.log"

find

$bak_dir

-mtime

+7

-exec

rm

-rf

{}

\

#end

求采纳为满意回答。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7605219.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-07
下一篇2023-04-07

发表评论

登录后才能评论

评论列表(0条)

    保存