每天自动删除过期备份

首先编写一个简单的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. Node.js精进(5)——HTTP

    HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种获取网络资源(例如图像.HTML文档)的应用层协议,它是互联网数据通信的基础,由请求和响应构成. 在 Node ...

  2. Python自动化办公:批量将文件按分类保存,文件再多,只需一秒钟解决

    序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 当我们电脑里面的文本或者或者文件夹太多了,有时候想找到自己想要的文件,只能通过去搜索文件名,要是名字忘记 ...

  3. Java 技术栈中间件优雅停机方案设计与实现全景图

    欢迎关注公众号:bin的技术小屋,阅读公众号原文 本系列 Netty 源码解析文章基于 4.1.56.Final 版本 本文概要 在上篇文章 我为 Netty 贡献源码 | 且看 Netty 如何应对 ...

  4. 使用开源Cesium+Vue实现倾斜摄影三维展示

    准备工作 VUE开发工具:Visual studio Code 倾斜摄影转换工具:CesiumLab-下载地址:http://www.cesiumlab.com/ 三维显示:Cesium,api参考网 ...

  5. [BJDCTF2020]EasySearch-1

    1.打开之后界面如下: 2.在首界面审查源代码.抓包未获取到有效信息,就开始进行目录扫描,获取到index.php.swp文件,结果如下: 3.访问index.php.swp文件获取源代码信息,结果如 ...

  6. CDH集群日常

    1.交换内存告警 该告警通常就是使用了swap分区导致的,在生产环境中,如果服务器内存是256G:建议关闭swap分区,减少跟数据盘之间的交互: 2.修改swap阈值 任何:表示只要使用了swap分区 ...

  7. 重写Object的equals方法和Objects的equals方法

    Object类的equals方法默认比较的是两个对象的地址值,没有意义 所以我们需要重写equals方法,比较两个对象的属性值(name,age等等): 对象的属性值一样返回true否则返回false ...

  8. php static 和self区别

    static(关键字) 类似于 self(关键字) , 但它指向的是被调用的类(Document) 而不是包含类(DomainObject) , static 和 self 的区别: <?php ...

  9. docker Compose 部署springboot+vue前端端分离项目

    温馨提示:如果有自己的服务器最好不过了,这样部署网项目就可以上线了.没有的话,只能使用localhost 本机访问啦,记得替换 ngixn 中的ip地址.域名为localhost. (一) 准备工作 ...

  10. cache2go-源码阅读

    简介 cache2go 是非常简短的 go 开源项目了,很适合作为第一个读源码项目. 如果你有一定的 go 开发经验,读起来会感觉到比较容易. 如果你刚刚接触 go 语音,基础知识还不完全了解,希望阅 ...