Небольшой скрипт для проверки файла.

12
S
На сайте с 10.08.2006
Offline
115
1706

доброго дня,

прошу помощи с написание небольшого скрипта для проверки файла на сервере и его перезаписи если он изменён.

есть файл eth0 - если он изменён (скажем размер отличается от заданного), то перезаписываем его из другого файла.

спасибо

Raistlin
На сайте с 01.02.2010
Offline
247
#1

наберите в консоли вашего сервера man cp и прочитайте параметры команды. А потом добавьте с нужными параметрами ее в крон... Какие к черту скрипты могут быть - я не понимаю.

HostAce - Асы в своем деле (http://hostace.ru)
D
На сайте с 11.05.2010
Offline
15
#2

Лучше не размер проверять, а md5 сумму. На perl скрипт пишется за 5-10 минут

С напильником и бубном (http://kaba.org.ua)
S
На сайте с 10.08.2006
Offline
115
#3
delicate:
Лучше не размер проверять, а md5 сумму. На perl скрипт пишется за 5-10 минут

вот я как раз и прошу в этом помощи, т.к. сам я перл не знаю

K
На сайте с 29.02.2008
Offline
116
kdj
#4

ставим GIT v1.7

cd <путь к файлу>

git init

git add <файл>

git commit -am "эталон"

потом по крону

git status --porcelain - проверяем статус(если гит ничего не вернул значит извинений не было)

если файл изменен делаем откат git checkout -- <file>

так будет надежнее и удобнее, и вы сможете вести историю изменения файла

hostmaster
На сайте с 26.05.2009
Offline
26
#5

скрипт не нужен, ибо велосипед уже изобретен и называется rsync

 $ rsync -va /my/source/file /my/target/file 

проверять права, размер или контрольную сумму всё это настраивается через параметры rsync

I'm lost without tcpdump
Raistlin
На сайте с 01.02.2010
Offline
247
#6
delicate:
Лучше не размер проверять, а md5 сумму. На perl скрипт пишется за 5-10 минут

Зачем для этого перл... На баше легко. Вот оно:

old_hash=`md5deep /путь к файлу`

hash=`md5deep /путь к эталонному файлу`

if [ $old_hash != $hash ]; then

cat /путь к эталонному файлу > /путь к файлу

fi

Зачем писать скрипты, если есть встроенные средства...?

Raistlin добавил 20.08.2010 в 14:03

hostmaster, Ну, рсинк еще и ставить надо. Мне иногда лень... А вообще +1.

hostmaster
На сайте с 26.05.2009
Offline
26
#7
Raistlin:
Зачем для этого перл... На баше легко. Вот оно:

old_hash=`md5deep /путь к файлу`
hash=`md5deep /путь к эталонному файлу`
if [ $old_hash != $hash ]; then
cat /путь к эталонному файлу > /путь к файлу
fi

этот вариант подходит только если md5 эталонного файла можно посчитать, в противном случае надо действовать по другому


посчитать md5 файла
if есть сохраненный md5 ?
if md5 текущего файла != записанное значение md5
перезаписать файл
fi
else
записать md5 в файл
fi
Raistlin
На сайте с 01.02.2010
Offline
247
#8

hostmaster, я так понимаю, в случае ТС можно ;)

Zaqwr
На сайте с 08.08.2007
Offline
111
#9

напишите апач на перле ещё =)

вобще rsync -va /my/source/file /my/target/file будет копить чуть ли не всё, если fs смонтирована без notime

Администрирование, Linux, Cisco, Juniper
S
На сайте с 10.08.2006
Offline
115
#10
Raistlin:
Зачем для этого перл... На баше легко. Вот оно:

old_hash=`md5deep /путь к файлу`
hash=`md5deep /путь к эталонному файлу`
if [ $old_hash != $hash ]; then
cat /путь к эталонному файлу > /путь к файлу
fi

Зачем писать скрипты, если есть встроенные средства...?

Raistlin добавил 20.08.2010 в 14:03
hostmaster, Ну, рсинк еще и ставить надо. Мне иногда лень... А вообще +1.

спасибо, это и нужно было

hostmaster:
скрипт не нужен, ибо велосипед уже изобретен и называется rsync

 $ rsync -va /my/source/file /my/target/file 



проверять права, размер или контрольную сумму всё это настраивается через параметры rsync

тоже вариант, сам не догадался=)

но вот Zaqwr написал:

вобще rsync -va /my/source/file /my/target/file будет копить чуть ли не всё, если fs смонтирована без notime

пока просто на пхп написано (на скорую руку)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий