备份文件夹的脚本

时间:2015-07-02 13:31:27

标签: bash backup

我在/opt/backup中有一个文件夹,每天都会创建文件夹。为了节省空间,我想所有超过2天的文件夹。

我不想创建一个单独的zip文件,而是自己压缩每个文件夹,并保留名称。我试过了:

#!/bin/bash
# Backup files

files=($(find /opt/backup/ -mtime +"2"))
for files in ${files[*]}
do
    echo $files
    tar cvfz backup.tar.gz $files
done

但所有这一切都是创建一个zip文件,我想分别为每个文件夹。

该脚本将在凌晨02:00每2天运行一次。请问我该怎么写这个脚本?

1 个答案:

答案 0 :(得分:1)

你太复杂了。你应该足够老的目录,并简单地用tar压缩它们。

find /opt/backup/ -mtime +"2" -type d -exec tar cvfz backup.tar.gz {} \;

这将查找所有目录(-type d)并对它们执行某个命令(tar cvfz backup.tar.gz {})。其中{}是找到目录的占位符。

如果您想保留dir的名称,只需再次使用{}

 find /opt/backup/ -mtime +"2" -type d -exec tar cvfz {}.tar.gz {} \;

请注意,{}周围不需要引号,因为find exec内的特殊字符处理得很好。