首页 > 代码库 > Linux系统自动备份的Shell

Linux系统自动备份的Shell

公司现在需要对现有的服务器进行定期备份,并将备份文件放置到正在使用的NAS中去;

为了备份的效率,还需要对备份的文件进行筛选,排除一些后缀名的文件;

实现方法如下:

1. 编写备份的shell文件

在想要放置shell文件的地方编辑backup.sh文件

# vi backup.sh

我们要备份整个目录中的文件,除了一些指定后缀名的文件,所以:

#
# Backup main project folder at PM 2:00
# By Andrew at 2016/12/2
#

#!/bin/sh
tar -czvf /mnt/nasBackup/backup2pm.tar.gz /project --exclude=*.ac* --exclude=*.core --exclude=*.err* --exclude=*.fsdb* --exclude=*.ic* --exclude=*.lis*

这里后缀名还可以再多写一些,还有养成写注释的好习惯;

完了之后一定要给到这个sh执行权限;

 

2. 挂载NAS设备

然后就要把备份到的设备挂载到Linux服务器上了,例如我的NAS的IP为192.168.1.40:

# mount -o username=admin,password=********** //192.168.1.40/BackUp /mnt/nasBackup/

还需要把这条加入到开机启动里面,每次重启系统都会自动挂载了:

# vi /etc/rc.d/rc.local

直接添加到下面。

 

3. 配置crontab文件

crontab文件中执行的是定期的命令,文件位于/etc/crontab,如下:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

0 14 * * * root /root/backup/backup2pm.sh > /dev/null 2>&1          这条是每天中午2点的时候执行一次backup2pm.sh
# */1 * * * * root /root/backup/test.sh > /dev/null 2>&1             这条是指每隔1分钟执行一次

 

Linux系统自动备份的Shell