Linux - Найти команду и команду tar Ошибка
Я использую комбинацию команд поиска и копирования в моем скрипте резервного копирования. он используется на довольно большом количестве данных,
- во-первых, из 25 файлов нужно найти все файлы старше 60 минут
- затем скопируйте эти файлы во временный каталог - каждый из этих файлов имеет размер от 1,52 до 2 ГБ
к одному из этих 25 файлов будут добавляться данные непрерывно.
Из googling я узнал, что операция Tarring завершится неудачей, если будет происходить обновление файла, который пытается сделать tar, это то же самое и с find и copy тоже?? Я пытаюсь что-то вроде этого,
/usr/bin/find $logPath -mmin +60 -type f -exec /bin/cp {} $logPath/$bkpDirectoryName \;
после этого у меня есть шаг, на котором я копирую файлы, скопированные во временный каталог, как упомянуто выше (&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
Это в основном то, что вам нужно, просто измените каталог, я думаю, //
Можете ли вы попробовать эти шаги, пожалуйста
- вместо копирования файлов старше 60 минут переместите их.
- запустите tar на перемещенных файлах
Если вы выполните вышеизложенное, файл, который постоянно добавляется, не будет перемещен.
Если какой-либо из ваших 24 файлов может быть обновлен через 60 минут, вы можете сделать следующее
- После перемещения файла коснитесь файла с тем же именем, если имеются асинхронные обновления, которые не являются непрерывными.
- Когда вы сохраняете файл, присвойте ему имя временной метки. Таким образом, у вас есть скользящий архив ваших журналов.
Если ничего не работает из-за каких-то особых требований с вашей стороны, попробуйте выполнить 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.
Я также хочу знать, через какой интервал вызывается ваш скрипт.