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分钟执行一次
改好检查cron服务有没有打开,每次修改后记得重启服务:
# service crond restart