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

Posted Zackary.Liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\n" {} \;

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

xargs 的 -0 选项

xargs -0 将 \0 作为定界符。

以上是关于Shell 实例:备份最后一天内所有修改过的文件的主要内容,如果未能解决你的问题,请参考以下文章

shell删除三天前或者三天内的文件

linux下用shell删除三天前或者三天内的文件

shell删除文件夹脚本怎么写?,保留2天内的文件夹,2天以前的是直接删除,每周二、四、六删一次

获取目录中最近 30 天内修改的所有文件

shell编程,跨服务器备份文件

linux查找与替换练习