Linux自动备份文件到远程FTP服务器并删除指定日期前的备份shell

时间:2021-11-07 00:31:17

1、需要备份的目录:

/home/admin/xiaoshiblog

2、创建保存备份文件的目录:
mkdir /home/admin/xiaoshiblogbak

chown admin:admin /home/admin/xiaoshiblogbak

#admin是你的FTP用户组,根据实际情况而定
3、创建备份脚本文件:

/home/admin/xiaoshiblogbak/wwwrootbak.sh
vi wwwrootbak.sh
输入以下内容:

#!/bin/sh 
  BK_DR=home/admin/xiaoshiblogbak
  #备份文件存放路径 
  DB_DR=home/admin/xiaoshiblog
  #你需要备份的目录
  DAYS=7 
  #DAYS=7代表删除7天前的备份,即只保留最近7天的备份 
  LINUX_USER=root 
  #系统用户名 
  date=` date +%Y%m%d ` 
  #以日期命名的变量,记着有单引号
  tar zcvf wwwroot$date.tar.gz $DB_DR 
  #打包需要备份的目录,并命名
  chown -R $LINUX_USER:$LINUX_USER $BK_DR 
  #更改备份存放目录所有文件的的所有者为root
  find $BK_DR -name "wwwroot*" -type f -mtime +$DAYS -exec rm {} \;
  #删除7天前的备份文件(注意:{} \;中间有空格) 
  deldate=` date -d -7day +%Y%m%d `
  #删除ftp服务器空间7天前的备份 
  ftp -n< open 10.102.51.111 21<<END
  #打开ftp服务器。21为ftp端口 
  user xiaoshi xiaoshi123
  #FTP的账号、密码
  binary #设置二进制传输 
  cd xiaoshiblogbak
  #进入远程ftp根目录的xiaoshibak
  lcd /home/admin/xiaoshiblogbak
  #列出本地目录
  prompt 
  mput wwwroot$date.tar.gz 
  #上传目录中的文件 
  mdelete wwwroot$deldate.tar.gz 
  #删除ftp空间7天前的备份 
  close 
  bye !
  

3、修改文件属性,使其可执行

chmod +x /home/admin/xiaoshiblogbak/wwwroot.sh

4、修改/etc/crontab

vi /etc/crontab
在下面添加

5 2 * * * root /home/admin/xiaoshiblogbak/wwwrootbak.sh

表示每天凌晨2点5分执行备份

5、重新启动crond使设置生效

/etc/rc.d/init.d/crond restart
  
  yum install -y vixie-cron

#安装计划任务,某些系统上可能没有预装

chkconfig crond on

#设为开机启动

service crond start

#启动

每天你在/home/admin/xiaoshiblogbak/目录下面可以看到类似wwwroot20120913.tar.gz这样的压缩文件
如果需要恢复文件的时候,只需要把这个文件解压即可
解压缩:tar -zxvf wwwroot20120913.tar.gz