在多个子目录中的logrotate文件中的文件中备份到相同文件夹结构中的备份位置



im试图使用很少的经验来使用logrotate,目前正常工作的是我的文件旋转,压缩和重命名到同一文件夹中。现在,我需要将文件放在同一位置,而需要将它们放在另一个位置。他们还需要具有相同的文件夹结构,如果不存在,则需要创建新文件夹。所有压缩文件都需要添加,而不是覆盖现有文件

我认为OldDir会将它们放入目标文件夹中,但不确定如何将其放在相应的文件夹中或创建它,如果它还没有。

示例源

var/log/device1/*。log

var/log/device2/*。log

var/log/device3/*。log

将.gz文件放入

的示例目的地

opt/存档/设备1/

opt/archvie/device2/

(需要创建Opt/Archive/Device3并将旋转文件放入此处)

最终没有找到一种与logrotate移动的方法,而是想出脚本来做同样的事情。非常简单,无法为超过1级的子文件夹工作。

#!/bin/bash
source="/opt/log/host"
destination="/opt/archive/"
for i in $(find $source -maxdepth 2 -type f -name "*.gz")
do
#removing /opt/log/host from string
dd="$( echo "$i" | sed -e 's#^/opt/log/host/##' )"
#removing everything after the first /
ff=$( echo "$dd" | cut -f1 -d"/" )
#setting the correct destination string
ee=$destination$dd
#create new folders if they do not exist
mkdir -p -- "$destination$ff"
#move files
mv $i $ee
done

最新更新