Linux - Найти команду и команду tar Ошибка

Я использую комбинацию команд поиска и копирования в моем скрипте резервного копирования. он используется на довольно большом количестве данных,

  1. во-первых, из 25 файлов нужно найти все файлы старше 60 минут
  2. затем скопируйте эти файлы во временный каталог - каждый из этих файлов имеет размер от 1,52 до 2 ГБ
  3. к одному из этих 25 файлов будут добавляться данные непрерывно.

    Из googling я узнал, что операция Tarring завершится неудачей, если будет происходить обновление файла, который пытается сделать tar, это то же самое и с find и copy тоже?? Я пытаюсь что-то вроде этого,

    /usr/bin/find $logPath -mmin +60 -type f -exec /bin/cp {} $logPath/$bkpDirectoryName \;
    
  4. после этого у меня есть шаг, на котором я копирую файлы, скопированные во временный каталог, как упомянуто выше (&bkpDirectoryName), здесь я использую, как упомянуто ниже,

    /bin/tar -czf $bkpDir/$bkpDirectoryName.tgz $logPath/$bkpDirectoryName
    

    и это тоже не удается.

один и тот же сценарий резервного копирования работал с прошлых многих дней, и внезапно он начал давать сбой и вызывал у меня головную боль! Может кто-нибудь, пожалуйста, помогите мне в этом??

3 ответа

#!/bin/bash
for find in `find / -name "*" -mmin 60`
do
 cp $find / ## Choose directory
done

Это в основном то, что вам нужно, просто измените каталог, я думаю, //

Можете ли вы попробовать эти шаги, пожалуйста

  1. вместо копирования файлов старше 60 минут переместите их.
  2. запустите tar на перемещенных файлах

Если вы выполните вышеизложенное, файл, который постоянно добавляется, не будет перемещен.

Если какой-либо из ваших 24 файлов может быть обновлен через 60 минут, вы можете сделать следующее

  1. После перемещения файла коснитесь файла с тем же именем, если имеются асинхронные обновления, которые не являются непрерывными.
  2. Когда вы сохраняете файл, присвойте ему имя временной метки. Таким образом, у вас есть скользящий архив ваших журналов.

Если ничего не работает из-за каких-то особых требований с вашей стороны, попробуйте выполнить rsync, а затем выполнить те же операции с файлами rsynced (например, find и tar или просто tar).

Попробуй это

output=`find $logPath -mmin 60 -type f`
if [ "temp$output" != "temp" ];then
  cp -rf $output $other_than_logPath/$bkpDirectoryName/
else 
   echo sorry
fi

Я думаю, вы используете +60 вместо 60.

Я также хочу знать, через какой интервал вызывается ваш скрипт.

Другие вопросы по тегам