以下是shell自动备份用的:

主要功能:

1)将pathSrc目录中的文件拷贝到pathDst目录中去。

  具体步骤:先查询源目录和目标目录中的文件,分别存在fileSrc和fileDst中。 -> 来两个循环,比较。不在fileDst的就拷贝过去。再判断一下是否拷贝成功。

2)将pathSrc中的文件保留180天。

  具体步骤:先查出源目录中大于180天的文件(就是那句find),然后删除。  

#!/bin/bash

v_time=`date "+%Y-%m-%d %H:%M:%S"`
bakstr="[Start auto backup gitlab data:]"${v_time}
logfile="/home/localgitlab/test/auto_back.txt"
echo >> $logfile
echo $bakstr >> $logfile pathSrc="/home/localgitlab/disk_new/backup"
filesSrc=$(ls $pathSrc) pathDst="/media/localgitlab/a1df1b08-ae43-45ea-8067-994497738cb2/backups"
filesDst=$(ls $pathDst) nSrcFileCount= ### Backup file: The file that determines the original path is not in the target path,
### and is not copied.
for filename in $filesSrc
do
nSrcFileCount=$(( $nSrcFileCount + ))
need_copy="yes"
for dstfile in $filesDst
do
if [ $filename == $dstfile ];then
need_copy="no"
fi
done if [ $need_copy == 'yes' ];then
echo $filename " need backup" >> $logfile
strCompletePath=${pathSrc}'/'${filename}
cp $strCompletePath $pathDst
if [ $? -eq ]; then
echo "copy file success" >> $logfile
else
echo "copy file fail" >> $logfile
fi
else
echo $filename " not need backup" >> $logfile
fi
done echo "Src dir have file count:" $nSrcFileCount >> $logfile ### Keep only data within days
delSrc=$(find $pathSrc -type f -mtime +)
for delfilename in $delSrc
do
echo "Need delete file: " $delfilename >> $logfile
rm -f $delfilename
if [ $? -eq ]; then
echo "delete file success" >> $logfile
else
echo "delete file fail" >> $logfile
fi
done

补充:

1、有需要的话可以用crontab假如到自动运行中去。如果涉及到源目录和目标目录访问权限的问题,可能需要用root加入crontab。

1)crontab -l:列出所有自动运行的脚本

2)crontab -e:将要执行的脚本假如到自动运行中去

2、关于find命令:

find pathname -options [-print -exec -ok] 
pathname    find命令所查找的目录路径。 
-print      find命令将匹配的文件输出到标准输出。 
-exec       find命令对匹配的文件执行该参数所给出的shell命令。 
-ok 和- exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行. 
1. -name   按照文件名查找文件 
2. -perm   按照文件权限来查找文件 
3. -mtime -n +n   按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。 
4. -newer file1  查找更改时间比文件file1新的文件。 
5. -type   查找某一类型的文件 
  b - 块设备文件。 
  d - 目录。 
  c - 字符设备文件。 
  p - 管道文件。 
  l - 符号链接文件。 
  f - 普通文件。 
6. 使用-size选项 ,按文件的大小查找文件的

linux 下shell脚本备份文件的更多相关文章

  1. linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  2. linux下shell脚本学习

    在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shel ...

  3. linux下shell脚本启动jar包

    本文采用的jar包是通过idea下maven打包的springboot项目. 写这个shell脚本是为了在linux下方便启动jar包时不用输入太多的shell命令,将启动脚本的一系列shell命令整 ...

  4. Linux 下Shell 脚本几种基本命令替换区别

    Shell 脚本几种基本命令替换区别 前言:因为工作需要,需要编写 shell script .编写大量 shell script 时,累计了大量经验,也让自己开始迷糊几种函数输出调用的区别.后面和 ...

  5. Linux下Shell脚本运行程序不输出日志到终端

    使用: 脚本路径/脚本名 >/dev/>& 说明: 可以简单的理解/dev/null是Linux下的回收站 >默认是把标准输出重定向 2>&1是把出错输出也定向 ...

  6. Linux下shell脚本实现mongodb定时自动备份

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...

  7. linux下shell 脚本 中windows换行符换成linux换行符

    sed -i 's/\r//' filename window下默认是 \r\n linux下是\n unix下是\r

  8. linux下shell脚本执行方法及exec和source命令

    exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两 ...

  9. Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段

    该脚本主要的目的是练习在Linux bash脚本中捕获信号,顺便练习一下函数的使用,还有就是终止一个正在运行的程序后,该程序打开的文件的后续处理问题等等!脚本功能:  ping一个网段内的IP,检测哪 ...

随机推荐

  1. Mysql 允许远程连接

    授权的方式允许任何主机访问mysql服务器: mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' W ...

  2. 20165223 实验四 Android开发基础

    实验四 Android开发基础 目录 一.实验报告封面 二.具体实验内容 (一)Android Stuidio的安装测试 (二)Activity测试 (三)UI测试 (四)布局测试 (五)教材代码测试 ...

  3. 工作笔记:/bin/bash^M: 坏的解释器: 没有那个文件或目录 问题解决

    问题原因: 由于windows上换行符为CR LF而在Linux下是 LF 导致出现上述问题 解决方案 1. 在windows下 可以使用nodepad打开该shell文件,然后将shell文件中的格 ...

  4. Ubuntu18.04 下 VirtualBox or VMWare 虚拟化问题

    This host supports Intel VT-x, but Intel VT-x is disabled.Intel VT-x might be disabled if it has bee ...

  5. 用 Homebrew 带飞你的 Mac

    文章目录 资料 安装 基本用法 源镜像 Homebrew也称brew,macOS下基于命令行的最强大软件包管理工具,使用Ruby语言开发.类似于CentOS的yum或者Ubuntu的apt-get,b ...

  6. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  7. Django 模板 继承和包含

    ##### 母版 ##### 这里是头部 {% block body-content %}{% endblock %} 这里是底部 #### 继承模板 ### {% extends 'layout.h ...

  8. HomeFragment 嵌套关系

    1.HomeFragment 在mainActivty 中调用: 2.HomeFragment 中: private ArrayList<Fragment> mFragments = ne ...

  9. Mac 上有哪些比较有意思的小软件?

    文章素材来源:微博.新浪看点 收录于:风云社区(SCOEE)[提供mac软件下载] 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 SCOEE],查找和下载相关软件资源. (一) ...

  10. MySQL5.7单实例二进制包安装方法

    MySQL5.7单实例二进制包安装方法 一.环境 OS: CentOS release 6.9 (Final)MySQL: mysql-5.7.20-linux-glibc2.12-x86_64.ta ...