Скрипты в Linux

  • Автор темы Kapitalist
  • Дата начала
Kapitalist

Kapitalist

Новичок
Регистрация
05.12.2007
Сообщения
656
Реакции
7
Баллы
0
Есть желающие помочь?)) Кроме простеньких бекапов ничего не писал (да и инфы в тырнетах полно по этому поводу, готовых скриптов куча - бери и переделывай). А сейчас возникла идея автоматизировать одну "штуку".

Есть вот такое: сортировщиком писем в папку складываются файлики. У файликов нет расширения, а имя файла - это время его получения. Причем файл может быть обычным текстовым файлом или же архивом содержащим несколько текстовых файлов.

Как бы сделать так, чтобы в эту директорию раз в минуту смотрел скрипт и если там что-то есть, то определял что это (архив или обычный текстовый файл). И если это архив, то распаковывал бы его.

Чтоб смотрел раз в минуту, это просто - вешаем скрипт на крон. Распаковать архив тоже не составляет труда. А вот как определить есть ли файл в этой папке, да еще и тип файла узнать?

Сам сложа руки сидеть не буду, но если кто в теме — отпишитесь. Заранее спасибо!
 
!Chip

!Chip

Активный участник
Регистрация
27.02.2008
Сообщения
41 584
Реакции
1 464
Баллы
113
В теории можно попробывать по чтению заголовка файла, открой архив в текстовом редакторе и будет понятно, но такие заголовки не у всех есть.
Что мешает тупо разархивировать всё подряд?
 
C

Cr_net

Новичок
Регистрация
14.08.2007
Сообщения
970
Реакции
0
Баллы
0
чем архивировано?
 
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
74 586
Реакции
1 884
Баллы
113
У файликов нет расширения, а имя файла - это время его получения. Причем файл может быть обычным текстовым файлом или же архивом содержащим несколько текстовых файлов.
А до сих пор как-то определялся тип файла?
 
C

Cr_net

Новичок
Регистрация
14.08.2007
Сообщения
970
Реакции
0
Баллы
0
[xxx@xxxxx ~]# file route-map_PEER-CLASS-OUT
route-map_PEER-CLASS-OUT: ASCII text
[xxx@xxxxx ~]# file radius2dhcp-3.0.5.patch
radius2dhcp-3.0.5.patch: 'diff' output text
[xxx@xxxxx ~]# file kaskad
kaskad: ASCII text
[xxx@xxxxx ~]# file livecd.iso
livecd.iso: ISO 9660 CD-ROM filesystem data
[xxx@xxxxx ~]# file stage3-i686-1.4_rc1.tar.bz2
stage3-i686-1.4_rc1.tar.bz2: bzip2 compressed data, block size = 900k
[xxx@xxxxx ~]# file raps104.tgz
raps104.tgz: gzip compressed data, from Unix
[xxx@xxxxx ~]# file overta-network.txt
overta-network.txt: ISO-8859 text
[xxx@xxxxx ~]#

man file
 
OP
Kapitalist

Kapitalist

Новичок
Регистрация
05.12.2007
Сообщения
656
Реакции
7
Баллы
0
Cr_net, спасибо!
xxx@xxxxx:/1# file 091320122010
091320122010: Microsoft Cabinet archive data, 1763 bytes, 1 file
 
OP
Kapitalist

Kapitalist

Новичок
Регистрация
05.12.2007
Сообщения
656
Реакции
7
Баллы
0
АААААААА он пришел, злой человек пришел! заглянул в монитор и сказал, что проще все это сделать на php))))
 
Alexxxl

Alexxxl

Новичок
Регистрация
21.02.2006
Сообщения
8 046
Реакции
1
Баллы
0
Знаю только один скрипт .. который убивает все все все и сношается с холодильником ....
 
a160xt

a160xt

LPD: Мельник
Регистрация
18.03.2004
Сообщения
4 501
Реакции
1
Баллы
0
неправда, я сказал не проще, а реальнее быстрее и удобнее. с получением и парсингом только имен файлов в директории какой геморой? а толи ещё будет.
поэтому так сказал
 
a160xt

a160xt

LPD: Мельник
Регистрация
18.03.2004
Сообщения
4 501
Реакции
1
Баллы
0
Знаю только один скрипт .. который убивает все все все и сношается с холодильником ....

топикстартеру не говори про него, а то напишет, а холодильники старые у нас, геронтофилия будет. ))
 
Alexxxl

Alexxxl

Новичок
Регистрация
21.02.2006
Сообщения
8 046
Реакции
1
Баллы
0
cd $TMPDIR
#Создать временный каталог
mkdir $DESTDIR
chmod 700 $DESTDIR
#Получить из репозитория последний бэкап
$SVN checkout -q $SVNROOTsvn/$REPDIR/trunk $DESTDIR
cd $DESTDIR
#Построить список файлов, которые надо забэкапить
list=`eval find $LIST $EXCLUDE_LIST -and -type f|sort`
#Копировать файлы
for p in ${list} $FILES ; do
pax -rw $p . > /dev/null 2>&1
done;
#убить увсе и вся .. все стереть нафик ...
list=`eval $SVN status|grep ^?|awk '{print $2}'`
#Посмотреть на холодилоьник тяжелым взглядом
for p in ${list} ; do
$SVN add -q $p
done;
#подойти к холодильнику
#развернуть его на 180 гр.
list=`eval find . -name .svn -prune -or -print`
#
#
for p in ${list} ; do
if [ ! -e /$p ]; then
$SVN delete -q $p --force
fi
done;
# надругаться над холодильником
$SVN diff
#Загрузить изменения в репозиторий
$SVN commit -q -m "svnbackup automatic update"
#Убрать за собой
cd ../
rm -rf $DESTDIR
 
R

Romario

Новичок
Регистрация
01.03.2007
Сообщения
1 901
Реакции
1
Баллы
0
Есть желающие помочь?)) Кроме простеньких бекапов ничего не писал (да и инфы в тырнетах полно по этому поводу, готовых скриптов куча - бери и переделывай). А сейчас возникла идея автоматизировать одну "штуку".

Есть вот такое: сортировщиком писем в папку складываются файлики. У файликов нет расширения, а имя файла - это время его получения. Причем файл может быть обычным текстовым файлом или же архивом содержащим несколько текстовых файлов.

Как бы сделать так, чтобы в эту директорию раз в минуту смотрел скрипт и если там что-то есть, то определял что это (архив или обычный текстовый файл). И если это архив, то распаковывал бы его.

Чтоб смотрел раз в минуту, это просто - вешаем скрипт на крон. Распаковать архив тоже не составляет труда. А вот как определить есть ли файл в этой папке, да еще и тип файла узнать?

Сам сложа руки сидеть не буду, но если кто в теме — отпишитесь. Заранее спасибо!

ну вообще обычним листингом можно узнать есть ли файл или нет:
#!/bin/sh
ls /mesto/gde/leshat/faily -1

а полученные список можно уже каверкать как тебе угодно либо по расширению разархивировать, либо если без расширения открывать catом и смотреть что в нутри. Короче нет ничего сложного.
 
Верх Низ