2015-03-11 4 views
-2

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

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

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

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

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

    , и это также терпит неудачу.

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

+2

Какая часть этого не может точно? Как это происходит? Какая ошибка вы получаете от неудачи? (Вы должны процитировать свои расширения переменных, кстати.) –

+0

Я запускаю команду find, упомянутую в вопросе с exec cp внутри цикла if, и продолжаю, если она будет успешной или собирается что-то еще, если она терпит неудачу, в настоящее время команда терпит неудачу и перемещение в другую часть. и о переменных, его просто путь к файлам и каталогам –

+0

Не имеет значения, какие переменные вы должны их цитировать. Если вы ** не знаете **, у вас есть причина ** не **, чтобы указать переменную, которую вы должны процитировать. Что такое блок if if? Вы видите сообщение об ошибке в любом месте? –

ответ

0

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

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

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

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

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

Если ничего не работает из-за некоторые пользовательские требования на вашей стороне, попробуйте сделать Rsync, а затем сделать те же операции на rsynced файлов (то есть найти и деготь или просто деготь)

0

попробовать это

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.

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

+0

Я хочу, чтобы все файлы старше 1 часа, чтобы получить tarred, поэтому я использую _60 –

+0

, скрипт вызывается каждые 24 часа –

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

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

+1

http://mywiki.wooledge.org/DontReadLinesWithFor http://mywiki.wooledge.org/BashFAQ/001 –

 Смежные вопросы

  • Нет связанных вопросов^_^