超过n天的Tar文件

时间:2019-01-22 10:09:20

标签: bash shell

我正在编写一个shell脚本,它将tar日志和zip超过180天的文件压缩并删除它们。

这是我的代码:

#!/bin/bash
files=()
while IFS=  read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find /mnt/main/var/www/m2allcrm/ -maxdepth 1 -mtime +180 -type f \( -name "*.log" -o -name "*.csv" \) -print0)
name=$(date '+%Y-%m-%d')
tar cvfz "backup_$name.tar.gz "${files[@]}"

当我运行它时,出现错误:

syntax error near unexpected token `<'

enter image description here

有人可以帮助我调试此错误并删除文件吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

tar的选项--files-from处理文件名中的空格,文件名-表示stdin

因此有一个简单的版本:

name=$(date +%Y-%m-%d)
find /mnt/main/var/www/m2allcrm/ -maxdepth 1 -mtime +180 -type f \( -name "*.log" -o -name "*.csv" \) | tar cvzf backup_$name.tar.gz --files-from -