URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8875
[ Назад ]

Исходное сообщение
"Скрипт копирование файлов со структурой директорий."

Отправлено exp131 , 27-Сен-10 18:02 
Уважаемые форумчане.

Помогите пожалуйста написать скрипт делающий следующуюю работу:

При запуске считывать из кофига дату и время и затем копировать файлы и каталоги (со структурой) старше этой даты в другой каталог. После этого записывать текущуюю дату в конфиг.


Содержание

Сообщения в этом обсуждении
"Скрипт копирование файлов со структурой директорий."
Отправлено phpcoder , 27-Сен-10 19:27 
find-ом ищи, при помощи xargs и install копируй.


"Скрипт копирование файлов со структурой директорий."
Отправлено exp131 , 27-Сен-10 19:38 
>find-ом ищи, при помощи xargs и install копируй.

C удовольствием последовал бы вашему совету, но проблема в том что в sh я не очень разбираюсь. Не могли бы вы привести пример скрипта?


"Скрипт копирование файлов со структурой директорий."
Отправлено Pahanivo , 28-Сен-10 08:06 
>>find-ом ищи, при помощи xargs и install копируй.
> C удовольствием последовал бы вашему совету, но проблема в том что в
> sh я не очень разбираюсь. Не могли бы вы привести пример
> скрипта?

опять студент?
лес там ->


"Скрипт копирование файлов со структурой директорий."
Отправлено exp131 , 28-Сен-10 08:21 
>>>find-ом ищи, при помощи xargs и install копируй.
>> C удовольствием последовал бы вашему совету, но проблема в том что в
>> sh я не очень разбираюсь. Не могли бы вы привести пример
>> скрипта?
> опять студент?
> лес там ->

Спасибо. Это "очень" помогло.


"Скрипт копирование файлов со структурой директорий."
Отправлено Pahanivo , 28-Сен-10 09:47 
man find
man xargs
man sh
...
так лучше?

"Скрипт копирование файлов со структурой директорий."
Отправлено exp131 , 28-Сен-10 09:48 
> man find
> man xargs
> man sh
> ...
> так лучше?

Нет не лучше. Если бы я все понял из манов - я бы не задавал вопрос тут.
Ладно с find'ом разобрался, но как скопировать файлы с сохранением структуры директорий?


"Скрипт копирование файлов со структурой директорий."
Отправлено Pahanivo , 28-Сен-10 10:14 
например так просто и быстро:
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 внимательно - он много че умеет - думаю тебе его одного по самые пАмидоры )



"Скрипт копирование файлов со структурой директорий."
Отправлено exp131 , 28-Сен-10 10:15 
>[оверквотинг удален]
> --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 внимательно - он много че умеет - думаю
> тебе его одного по самые пАмидоры )

Спасибо. Посмотрю.


"Скрипт копирование файлов со структурой директорий."
Отправлено exp131 , 28-Сен-10 10:21 
>[оверквотинг удален]
> --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 это время (чтобы скопировались только новые файлы). Подскажите как это можно сделать.


"Скрипт копирование файлов со структурой директорий."
Отправлено Pahanivo , 28-Сен-10 11:33 
> Однако остался последний момент. Скрипт будет запускаться по крону, поэтому мне нужно
> будет сохранить время запуска и при следующем запуске подставить в find
> это время (чтобы скопировались только новые файлы). Подскажите как это можно
> сделать.

startdate=`date "some_format"` #MUST BE FIRST!
find / bla bla bla ...
if [ $? -eq 0 ]; then
  echo $startdate > "date_file"
fi



"Скрипт копирование файлов со структурой директорий."
Отправлено exp131 , 28-Сен-10 11:38 
>> Однако остался последний момент. Скрипт будет запускаться по крону, поэтому мне нужно
>> будет сохранить время запуска и при следующем запуске подставить в 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 "


"Скрипт копирование файлов со структурой директорий."
Отправлено Pahanivo , 28-Сен-10 11:45 
> Спасибо. А как потом эту дату прочитать и вставить в find?

lastdate=`cat "date_file"`
find / bla bla ${lastdate} bla bla
> PS. Что означает эта конструкция: " $? -eq 0 "

проверка кода завершения - на случай если архивация завершилась фЕйлом



"Скрипт копирование файлов со структурой директорий."
Отправлено exp131 , 28-Сен-10 15:58 
>> Спасибо. А как потом эту дату прочитать и вставить в find?
> lastdate=`cat "date_file"`
> find / bla bla ${lastdate} bla bla
>> PS. Что означает эта конструкция: " $? -eq 0 "
> проверка кода завершения - на случай если архивация завершилась фЕйлом

Спасибо за подсказки.
Задача решена.