如何使用Bash tar目录中的文件

时间:2017-04-24 20:39:00

标签: linux bash tar

我正在尝试使用超过3天的tar文件。我查看了现有问题creating tar file and naming by current date但是当我运行脚本时,文件不会被修改。有没有人有一些提示?

# Tar files older than 3 days
files=($(find /this/is/my_path/ -type f -mtime +3))
tar -cvfz backup.tar.gz "${files[@]}"
if [ ! -f ${LOGFILE}.tar.gz ]; then
  Error checking
  if [ $? -ne 0 ]; then
     Process_Error $ERROR_SUM "This file had a problem $FILE!"
  fi
fi

}

1 个答案:

答案 0 :(得分:1)

files=( )
while IFS= read -r -d '' file; do
  files+=( "$file" )
done < <(find /this/is/my_path/ -type f -mtime +3 -print0)
tar -cvzf backup.tar.gz -- "${files[@]}"
  • a comment on the question by @123所述, -f后面的参数是一个文件名;在上面,那变成了z
  • array=( $(...) )天生就不可靠:它依赖于IFS中字符的字符串拆分来查找文件名之间的边界。但是,路径中唯一不存在的字符是NUL - 并且NUL不能存储在字符串(IFS的数据类型)中。请参阅BashPitfalls #1(目前,files=($(find . -type f))示例是倒数第二个。)