每天自动删除过期备份

首先编写一个简单的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. RPA应用场景-定点取数

    场景概述定点取数 所涉系统名称业务系统,Excel 人工操作(时间/次) 8 小时 所涉人工数量 2 操作频率实时 场景流程 1.从业务系统中拉取指定字段值的数据填入Excel: 2.将Excel每隔 ...

  2. Elasticsearch学习系列七(Es分布式集群)

    核心概念 集群(Cluster) 一个Es集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识 节点(Node) 一个Es实例就是一个Node.Es的配置文件中可以通过node.ma ...

  3. 零基础学Java(1)初识Java程序

    前言 就国内来说,Java毫无疑问是后端语言中的No.1没有之一,所以今天我们也来0基础学习Java!!! Java的好处(针对测试工程师) 面试加分->涨薪 大多数公司服务端用的都是Java, ...

  4. VScode中配置Java环境

    vscode 中配置Java环境 转载说明:本篇文档原作者[@火星动力猿],文档出处来自哔哩哔哩-[教程]VScode中配置Java运行环境 转载请在开头或显眼位置标注转载信息. 1.下载VScode ...

  5. wsl2安装百度apollo及其基本配置

    一. wsl2的开启 首先 WSL2 gui 需要Windows 11 Build 22000版本以上才支持 利用管理员权限打开PowerShell 执行 dism.exe /online /enab ...

  6. 基于POM---UI测试框架

    为什么会出现这个半自动化UI测试框架 我进入公司的前一个月从事的手工测试,为了提高自己的测试效率在工作时间之外写了一个半自动化的UI测试(害怕手工测试做久了,忘记自己还学过软件开发), 为什么我把它叫 ...

  7. PTA(BasicLevel)-1014 福尔摩斯的约会

    一.问题描述 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明 ...

  8. Node.js精进(9)——性能监控(上)

    市面上成熟的 Node.js 性能监控系统,监控的指标有很多. 以开源的 Easy-Monitor 为例,在系统监控一栏中,指标包括内存.CPU.GC.进程.磁盘等. 这些系统能全方位的监控着应用的一 ...

  9. 详解 Apache Hudi Schema Evolution(模式演进)

    Schema Evolution(模式演进)允许用户轻松更改 Hudi 表的当前模式,以适应随时间变化的数据. 从 0.11.0 版本开始,支持 Spark SQL(spark3.1.x 和 spar ...

  10. 2022-7-18 第五组 pan 面向对象

    面向过程 向过程就是:面向过程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求. 面向对象 什么是面向对象: 面向对象思想就是不断的创建对象,使用对 ...