Уважаемые форумчане.Помогите пожалуйста написать скрипт делающий следующуюю работу:
При запуске считывать из кофига дату и время и затем копировать файлы и каталоги (со структурой) старше этой даты в другой каталог. После этого записывать текущуюю дату в конфиг.
find-ом ищи, при помощи xargs и install копируй.
>find-ом ищи, при помощи xargs и install копируй.C удовольствием последовал бы вашему совету, но проблема в том что в sh я не очень разбираюсь. Не могли бы вы привести пример скрипта?
>>find-ом ищи, при помощи xargs и install копируй.
> C удовольствием последовал бы вашему совету, но проблема в том что в
> sh я не очень разбираюсь. Не могли бы вы привести пример
> скрипта?опять студент?
лес там ->
>>>find-ом ищи, при помощи xargs и install копируй.
>> C удовольствием последовал бы вашему совету, но проблема в том что в
>> sh я не очень разбираюсь. Не могли бы вы привести пример
>> скрипта?
> опять студент?
> лес там ->Спасибо. Это "очень" помогло.
man find
man xargs
man sh
...
так лучше?
> man find
> man xargs
> man sh
> ...
> так лучше?Нет не лучше. Если бы я все понял из манов - я бы не задавал вопрос тут.
Ладно с find'ом разобрался, но как скопировать файлы с сохранением структуры директорий?
например так просто и быстро:
man tar:
--newer date
(c, r, u modes only) Only include files and directories newer
than the specified date. This compares ctime entries.tar -c - DIR | tar -x .....
както так ....
вообще посмотри man tar внимательно - он много че умеет - думаю тебе его одного по самые пАмидоры )
>[оверквотинг удален]
> --newer date
>
> (c, r, u modes only) Only include files and directories
> newer
>
> than the specified date. This compares ctime entries.
> tar -c - DIR | tar -x .....
> както так ....
> вообще посмотри man tar внимательно - он много че умеет - думаю
> тебе его одного по самые пАмидоры )Спасибо. Посмотрю.
>[оверквотинг удален]
> --newer date
>
> (c, r, u modes only) Only include files and directories
> newer
>
> than the specified date. This compares ctime entries.
> tar -c - DIR | tar -x .....
> както так ....
> вообще посмотри man tar внимательно - он много че умеет - думаю
> тебе его одного по самые пАмидоры )Нашел более удобный вариант с помощью pax. В итоге у меня получилась команда:
find . -type f -depth -mtime -30m -exec pax -rw {} /var/backup/ \;Однако остался последний момент. Скрипт будет запускаться по крону, поэтому мне нужно будет сохранить время запуска и при следующем запуске подставить в find это время (чтобы скопировались только новые файлы). Подскажите как это можно сделать.
> Однако остался последний момент. Скрипт будет запускаться по крону, поэтому мне нужно
> будет сохранить время запуска и при следующем запуске подставить в find
> это время (чтобы скопировались только новые файлы). Подскажите как это можно
> сделать.startdate=`date "some_format"` #MUST BE FIRST!
find / bla bla bla ...
if [ $? -eq 0 ]; then
echo $startdate > "date_file"
fi
>> Однако остался последний момент. Скрипт будет запускаться по крону, поэтому мне нужно
>> будет сохранить время запуска и при следующем запуске подставить в find
>> это время (чтобы скопировались только новые файлы). Подскажите как это можно
>> сделать.
> startdate=`date "some_format"` #MUST BE FIRST!
> find / bla bla bla ...
> if [ $? -eq 0 ]; then
> echo $startdate > "date_file"
> fiСпасибо. А как потом эту дату прочитать и вставить в find?
PS. Что означает эта конструкция: " $? -eq 0 "
> Спасибо. А как потом эту дату прочитать и вставить в find?lastdate=`cat "date_file"`
find / bla bla ${lastdate} bla bla
> PS. Что означает эта конструкция: " $? -eq 0 "проверка кода завершения - на случай если архивация завершилась фЕйлом
>> Спасибо. А как потом эту дату прочитать и вставить в find?
> lastdate=`cat "date_file"`
> find / bla bla ${lastdate} bla bla
>> PS. Что означает эта конструкция: " $? -eq 0 "
> проверка кода завершения - на случай если архивация завершилась фЕйломСпасибо за подсказки.
Задача решена.