每天自动删除过期备份

首先编写一个简单的Shell脚本DeleteExpireBackup.sh:

#!/bin/bash

# 修改需要删除的路径
location="/database/backup/" # 删除最后修改时间为30天以前的备份文件夹
find $location -mtime +30 -type d | xargs rm -rf {}
  • -mtime:文件内容最后一次修改的时间,+30 代表大于30天的。其他参数可选:

    • 访问时间戳(atime):最后一次读取文件的时间。

    • 更改时间戳 (ctime):上次更改文件元数据的时间,例如其所有权、位置、文件类型和权限设置。

  • -type代表文件类型,f代表文件,d代表目录,l代表软链接文件

脚本编写并保存后会发现无法执行,因为需要设置文件权限,切换到脚本保存的当前目录,执行下面的命令:

chmod a+x DeleteExpireBackup.sh

脚本准备完毕,然后就是设置自动执行时间

我这里偷懒了,直接用的宝塔设置的,其实本质是一样的,都是用的crontab定时执行,不懂的同学自行google。

宝塔设置如下:

设置完成后,点击添加任务,自动删除备份就完成了。

有时候执行脚本会出现以下错误:

/bin/bash^M: 坏的解释器: 文本文件忙

出现这个错误,多半是Windows下编写的脚本,编写完毕后传到服务器上执行。

因为Windows系统下换行符为 \r\n,linux下换行符为 \n,因此在windows下编写的文件会比linux下多一个回车符号 \r。去掉多余的 \r 回车符 即可。

操作办法:可以用sed命令进行全局替换 sed 's/\r//' -i 脚本名称.sh

每天定时异地备份

其余操作和定时删除大同小异,所以这里我只展示脚本内容:

#!/usr/bin/expect -f
# 获取当前日期 例如:20220101
set date [ clock format [ clock seconds ] -format "%Y%m%d" ]
# 传输用户名
set username 用户名
# 密码
set password 密码
# expect默认timeout为30S 超过30s未传输完会停止,设置为 -1 则不限制超时时间
set timeout -1 # 压缩 端口 递归 需要传输的本地绝对路径 用户名 目标IP 目标服务器路径
spawn /usr/bin/scp -C -P 22 -r /database/backup/$date/ $username@192.168.2.2:/database/backup/ expect {
"*yes/no" {send "yes\r";exp_continue}
"*password:" {send "$password\r"}
} expect eof

脚本是使用 scp 从一个Linux传送至另一台Linux服务器来完成异地备份的。

Linux下自动删除过期备份和自动异地备份的更多相关文章

  1. windows下自动删除过期文件的脚本

    windows下自动删除过期文件的脚本 前言: 比如日志文件每天都产生,时间长了就会有很大的一堆垃圾.整理一下 定时删除文件的方法. 正文: Windows: 定时删除tomcat日志和缓存.可以保留 ...

  2. SqlServer数据库同时备份到两台服务器上(并自动删除过期文件)

    数据库同时备份到两台服务器上(并自动删除过期文件) 举例 :(本地)服务器A: IP :192.168.1.1 (远程)服务器B: IP :192.168.1.2 数据库版本:SqlServer200 ...

  3. apache日志配置一例,包括指定存储目录与格式、自动删除过期的日志文件

    有需要的朋友可以参考下(http://www.nanke0834.com) 1.vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 添加或修改为:复 ...

  4. linux下怎么删除名称带空格的文件

    linux下怎么删除名称带空格的文件-rm 'mysql bin.000005' 用引号把文件名括起来 某些情况下会出现名称带空格的文件, 如果想要删除的话,直接用rm mysql bin.00000 ...

  5. Linux下简单粗暴使用rsync实现文件同步备份【转】

    这篇来说说如何安全的备份,还有一点不同的是上一篇是备份服务器拉取数据,这里要讲的是主服务器如何推送数据实现备份. 一.备份服务器配置rsync文件 vim /etc/rsyncd.conf #工作中指 ...

  6. linux下应用crontab对mysql数据库进行定时备份

    linux下应用crontab对mysql数据库进行定时备份 @(编程) mysql数据库提供了备份命令mysqldump,可以结合crontab命令进行定时备份. 我写了一个mysqlbackup. ...

  7. Linux下批量删除空文件

    Linux下批量删除空文件(大小等于0的文件)的方法 find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还能够删除指定 ...

  8. (转)linux下文件删除的原理精华讲解(考试题答案系列)

    linux下文件删除的原理精华讲解(考试题答案系列) 说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息.http://ol ...

  9. 【linux】lsof命令和{Linux下文件删除、句柄与空间释放问题}

      导读: 一.用事实说话 二.关于LSOF命令的其它用法: 三.参考文档:   正文: lsof:Finding open files with lsof 作用:查看文件被哪些进程打开 一.用事实说 ...

随机推荐

  1. js 表面学习 - 认识函数

    JavaScript 函数语法 JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 (). 函数名可包含字母.数字.下划线和美元符号(规则与变量名相同). 圆括号可包 ...

  2. Django快速入门之项目配置

    开始 环境 python:3.6.2 django:2.0.5 跑起来 用pycharm导入或新建一个Django项目,在目录中存在manage.py的文件,通过下列指令运行Django后台. pyt ...

  3. C++实现ETW进行进程变动监控

    C++实现ETW进行进程变动监控 文章地址:https://www.cnblogs.com/Icys/p/EtwProcess.html 何为Etw ETW(Event Tracing for Win ...

  4. Java开发学习(十一)----基于注解开发bean作用范围与生命周期管理

    一.注解开发bean作用范围与生命周期管理 前面使用注解已经完成了bean的管理,接下来将通过配置实现的内容都换成对应的注解实现,包含两部分内容:bean作用范围和bean生命周期. 1.1 环境准备 ...

  5. 4-5 Spring Boot

    1. 关于Spring Boot Spring Boot是Spring官方的一个产品,其本质上是一个基于Maven的.以Spring框架作为基础的进阶框架,很好的支持了主流的其它框架,并默认完成了许多 ...

  6. Trie树模板2

    Trie数模板2 problem 这道题然后我们求最大异或对,我们很容易想出来 \(O(n^2)\) 的做法,两层循环遍历搞定 然后我们知道这样是肯定是肯定过不了的,我们考虑用字典树解决,然后我们来看 ...

  7. Keep In Line_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ...

  8. gitlab+jenkins学习笔记

    一.部署gitlab gitlab部署我采用的是docker的方式,这种方式的优势是方便:之前部署过非docker的gitlab,需要配置安装许多东西,太麻烦,还是docker部署方便,从官网pull ...

  9. websocket心跳实现

    简介 在实际项目中可能会使用到websocket,在使用过程中可能会存在一种问题就是,当网络异常断开时.或者websocket服务波动时,websocket会断开,导致异常,正常情况下,我们会采用心跳 ...

  10. 精心总结十三条建议,帮你创建更合适的MySQL索引

    上篇文章讲到使用MySQL的Explain命令可以分析SQL性能瓶颈,优化SQL查询,以及查看是否用到了索引. 我们都知道创建索引可以提高查询效率,但是具体该怎么创建索引? 哪些字段适合创建索引? 哪 ...