• Shell 实例:备份最后一天内所有修改过的文件


    在一个"tarball"中(经过 tar 和 gzip 处理过的文件)备份最后 24 小时之内当前目录下所有修改的文件。

    程序代码如下:

    #!/bin/bash
    
    BACKUPFILE=backup-$(date +%y-%m-%d)
    # 在备份文件中嵌入时间。
    
    archive=${1:-$BACKUPFILE}
    # 如果在命令行中没有指定备份文件的文件名,那么将默认使用"backup-YYYY-MM-DD"文件名。
    
    tar cvf - `find . -mtime -1 -type f -print` > $archive.tar
    
    gzip $archive.tar
    
    echo "Directory $PWD backed up in archive file "$archive.tar.gz"."
    
    exit 0
    

    注意

    如果在发现太多的文件的时候,或者是如果文件名包括空格的时候,将执行失败。

    建议使用下边的两种代码之一

    # -------------------------------------------------------------------
    # find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar"
    # 使用 gnu 版本的 find
    
    # find . -mtime -1 -type f -exec tar rvf "$archive.tar" '{}' ;
    # 对于其他风格的 UNIX 便于移植,但是比较慢。
    # -------------------------------------------------------------------
    

    find 的 -exec 选项举例说明

    找出当前目录下所有 .txt 文件并以 “File: 文件名” 的形式打印出来:

    find . -type f -name "*.txt" -exec printf "File: %s
    " {} ;
    

    上例中,{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。

    xargs 的 -0 选项

    xargs -0 将 作为定界符。

  • 相关阅读:
    tcp粘包解决
    socket网络编程
    logging模块
    异常处理
    hashlib configparser模块
    列表推导式和生成器表达式和内置函数
    迭代器与生成器
    装饰器
    函数
    文件操作
  • 原文地址:https://www.cnblogs.com/GyForever1004/p/8495172.html
Copyright © 2020-2023  润新知