1. zip如何排除文件夹
zip -r jason.zip jason/* -x jason/backports-4.4.2-1/\*
以上命令打包jason文件夹,排除其中的backports-4.4.2-1文件夹
如果改成这样:
zip -r jason.zip jason/* -x jason/backports-4.4.2-1\*
会排除其中以backports-4.4.2-1开头的文件和文件夹,比如jason下还有文件backports-4.4.2-1.tar.gz,也会被排除。
那这样呢?
zip -r jason.zip jason/* -x jason/backports-4.4.2-1/**\*
会排除backports-4.4.2-1目录下的所有文件和文件夹,backports-4.4.2-1目录保留
zip -r jason.zip jason/* -x jason/backports-4.4.2-1/*
这样只排除backports-4.4.2-1目录下的文件了
2. zip打包指定时间内的文件
zip支持-t(--from-date mmddyyyy), -tt(--before-date mmddyyyy)参数,可以根据mtime打包文件。"yyyy-mm-dd"格式也支持。
zip -rt 2016-11-11 jason.zip jason
那要根据ctime,atime呢,只能借助find了,使用find的优点是支持更精确的时间。
CentOS 7 find支持-newerXY参数,如根据ctime则为-newerct,可以查找ctime比指定时间新的文件。
find jason -newerct "2016-11-11 11:11:11" | zip -@ jason.zip
CentOS 6 find不支持-newerXY,只能使用参数-ctime,-atime/-cmin,-amin, 只是要计算一下时间,稍麻烦点。
find jason -cmin -100 | zip -@ jason.zip
可以通过以下的dateDiff function计算时间,比如:
min=$(date_diff "-m" "now" "2016-11-11 11:11")
#!/bin/bash date2stamp () { date -d "$1" +%s } dateDiff () { case "$1" in "-s") sec=1 shift ;; "-m") sec=60 shift ;; "-h") sec=3600 shift ;; "-d") sec=86400 shift ;; *) sec=86400 ;; esac date1=$(date2stamp "$1") date2=$(date2stamp "$2") diffSec=$((date2-date1)) if [ "$diffSec" -lt 0 ]; then abs=-1 else abs=1 fi # 通过echo返回值 echo $((diffSec/sec*abs)) }
3. 示例Shell
#!/bin/bash . $(dirname $0)/datediff.sh FILE_PATH="File" EXCLUDE="File/tmp/\* File/20140505/\*" FORMAT1="+%Y-%m-%d %H:%M:%S" FORMAT2="+%Y%m%d%H%M" start_time1=$(date "$FORMAT1") start_time2=$(date "$FORMAT2") backup_all() { echo "$start_time1 start backup all files" filename=$(get_filename "all" "$start_time2") zip -r "$filename" "$FILE_PATH"/* -x "$EXCLUDE" echo $(date "$FORMAT1") backup finished } backup_from() { echo "$start_time1 start backup files from $1" filename=$(get_filename $(date_format "$1") "$start_time2") min=$(date_diff "-m" "$1" "now") find "$FILE_PATH" -cmin -"$min" | zip -@ "$filename" # zip "$filename" -d "$EXCLUDE" echo $(date "$FORMAT1") backup finished } backup_range() { echo "$start_time1 start backup files from $1 to $2" filename=$(get_filename $(date_format "$1") $(date_format "$2")) min1=$(date_diff "-m" "$1" "now") min2=$(date_diff "-m" "$2" "now") find "$FILE_PATH" -cmin -"$min1" -cmin +$(($min2-1)) | zip -@ "$filename" # zip "$filename" -d "$EXCLUDE" echo $(date "$FORMAT1") backup finished } date_format () { date -d "$1" "$FORMAT2" } get_filename () { echo "File_$1_$2.zip" } check_date () { flag=$(echo "$1" | grep -cE "(^[0-9]{4}-[0-9]{2}-[0-9]{2}$)|(^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$)") if [ "$flag" -ne 1 ]; then echo "failure" fi } if [ "$#" -eq 2 ]; then flag1=$(check_date "$1") flag2=$(check_date "$2") if [ "x$flag1" = "x" ] && [ "x$flag2" = "x" ]; then backup_range "$1" "$2" else echo "Please input valid date" fi exit fi case "$1" in "-h"|"--help") echo "Usage: $0 {all|2016-11-11|'2016-11-11 11:11'|2016-11-11 '2016-11-13 23:59'} exit 1 ;; "all") backup_all ;; *) flag=$(check_date "$1") if [ "x$flag" = "x" ]; then backup_from "$1" else echo "Please input valid date" fi ;; esac
相关推荐
linux基本知识课件入门.ziplinux基本知识课件入门.ziplinux基本知识课件入门.ziplinux基本知识课件入门.zip
linux进程的一切知识.zip 进程占用的内存空间布局,虚拟空间地址分布 进程启动的3种方式 监控子进程的状态 进程的终止 僵尸进程
Linux下的应用程序开发.zip 全面详尽的讲述linux环境下c语言的开发。目录如下 第一章 基础知识 ……………………………………………………………………………4 第二章 进程介绍 …………………………………………...
linux基础知识学习参考资料.zip
本代码配套我的博客里的多线程编程, 这里系统性地进行讲解,附带每个知识点的代码,快速入门Linux的多线程编程! 博客地址:https://blog.csdn.net/weixin_40519315/article/details/104211643
本书讲述了Linux系统及其他UNIX风格的操作系统上的程序开发,主要内容包括标准Linux C语言函数库和由不同的Linux或UNIX标准指定的各种工具的使用方法,大多数标准Linux开发工具的使用方法,通过DBM和MySQL数据库...
Linux知识精讲 系列汇总.zip
Linux知识点小结 10大白帽黑客专用的 Linux 操作系统 软件工具 超赞的Linux软件 Github仓库Zh En 程序员喜欢的9款最佳的Linux文件比较工具 提高...
04-企业级Linux安装及远程连接知识实践 05-Linux bash核心介绍及目录命令讲解 06-Linux重要目录结构及目录命令讲解 07-文件处理命令重要知识讲解 08-别名-重定向-去重排序等 09-Linux文件类型及查找文件精讲 10-...
压缩包包括了Linux最小系统的全部代码文件,使用C语言编写,需要C语言的基础知识,还有带注释版本的说明文件。 为了方便读者也阅读和学习,下面是本人推荐的阅读技巧: Linux 当前最新版本是 6.4.7,总共代码超过700...
Linux学习笔记(强悍总结值得一看),细说linux基础知识,LINUX源码.zip
linux结构知识赋能一张图.zip
目录网盘文件永久链接 1 云计算HCIP-Linux安装及简单操作-01 2 云计算HCIP-Linux安装及简单操作-02 3 云计算HCIP-Linux安装及简单操作-03 4 云计算HCIP-Linux安装及简单操作-...12 云计算HCIP-Linux文件系统基础知识-12
使用思源笔记或obsidian打开.zip个人编程知识库:Linux,网络,C++,Java,MySql,设计模式。使用思源笔记或obsidian打开.zip个人编程知识库:Linux,网络,C++,Java,MySql,设计模式。使用思源笔记或obsidian打开...
linux初级学习备忘手册就应该是一本精华且小巧,随用随查的知识地图,所以我把不重要的,或者说没必要通过查询获得的知识,都删除掉了。内容的减少的另一个好处是,让这个linux初级学习备忘手册变的无比轻薄,你上...
记录了从RHCSA一直到RHCE的学习笔记,也希望可以有一定的Linux操作系统基础,以便后面可以开拓自己的知识面,包括后面学习渗透技术的时候需要一些操作系统的基础知识。
这是一个介绍 linux 编程知识的文章。
Linux-Insides 是一系列 Linux 内核的展示。它通过分享 Linux 内核的内部知识来增加人们对 Linux 内核或者其他低级别主题的兴趣。