LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Ну если по простому то как-то так:

#!/bin/bash

LEVEL=5
STARTDIR=/DUMPPLACE
OUTDIR=/restore

find_out=/tmp/find_out$$.txt
find "$STARTDIR" > $find_out
del=
for ((i=0; i<LEVEL; i++)); do
        del="$del*/"
done

while read f; do
        p=${f#$del}
        [[ $p = $f ]] && continue
        if [[ $f -nt $OUTDIR/$p ]]; then
                if [[ -d $f ]]; then
                        echo mkdir -p "$OUTDIR/$p"
                else
                        echo copy "$f" "$OUTDIR/$p"
                fi
        else
                echo skip "$p"
        fi
done < $find_out
rm $find_out

Где первые переменные надо сделать под вас. LEVEL - это количество '/' в полном пути из $DUMPPLACE/$NOWYEAR/$NOWMONTH/$NOWDAY/, то есть в том числе и в $DUMPPLACE. echo сами после теста первые два удалите.

Исправление vodz, :

Ну если по простому то как-то так:

#!/bin/bash

LEVEL=5
STARTDIR=/DUMPPLACE
OUTDIR=/restore

find_out=/tmp/find_out$$.txt
find "$STARTDIR" > $find_out
del=
for ((i=0; i<LEVEL; i++)); do
        del="$del*/"
done

while read f; do
        p=${f#$del}
        [[ $p = $f ]] && continue
        if [[ $f -nt $OUTDIR/$p ]]; then
                if [[ -d $f ]]; then
                        echo mkdir -p "$OUTDIR/$p"
                else
                        echo copy "$f" "$p"
                fi
        else
                echo skip "$p"
        fi
done < $find_out
rm $find_out

Где первые переменные надо сделать под вас. LEVEL - это количество '/' в полном пути из $DUMPPLACE/$NOWYEAR/$NOWMONTH/$NOWDAY/, то есть в том числе и в $DUMPPLACE. echo сами после теста первые два удалите.

Исходная версия vodz, :

Ну если по простому то как-то так:

#!/bin/bash

LEVEL=5
STARTDIR=/DUMPPLACE
OUTDIR=/restore

find_out=/tmp/find_out$$.txt
find "$STARTDIR" > $find_out
del=
for ((i=0; i<LEVEL; i++)); do
        del="$del*/"
done

while read f; do
        p=${f#$del}
        [[ $p = $f ]] && continue
        if [[ $f -nt $OUTDIR/$p ]]; then
                if [[ -d $f ]]; then
                        echo mkdir -p $OUTDIR/$p
                else
                        echo copy $f $p
                fi
        else
                echo skip $p
        fi
done < $find_out
rm $find_out

Где первый переменные надо сделать под вас. LEVEL - это количество '/' в полном пути из $DUMPPLACE/$NOWYEAR/$NOWMONTH/$NOWDAY/, то есть в том числе и в $DUMPPLACE. echo сами после теста первые два удалите.