Archive
bash script за бекъп (backup) на база данни
В момента съм в процес на ъпгрейд на бекъп системата ми. Не се учудвайте ако видите нещо да е “не както трябва”, защото все пак цялата система е писана за лични нужди и скоро няма изгледи да бъде пусната за масово ползване.
За пореден път: авторите на блога не отговарят за щетите, които може да нанесете на системата си, използвайки и прилагайки статиите написани тук!
Ето го и скрипта
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #!/bin/bash DBUSER="root" DBPASS="password_here" DIR="/home/blagomir/test/" DUMP="/usr/bin/mysqldump" DATABASES=`mysql -u $DBUSER -p$DBPASS -e"show databases"` for b in $DATABASES ; do TABLES=`mysql -u $DBUSER -p$DBPASS -e"show tables from $b"` echo "==============================================" echo "Backup database $b" for t in $TABLES ; do VARIABLE="Tables_in_$b" if [[ "$VARIABLE" != $t ]]; then echo "Backup table $b.$t" $DUMP -u $DBUSER -p$DBPASS --database $b --table $t > $DIR$b.$t.sql fi done echo "Done backup $b" echo "==============================================" done |
За зелените… компютри.
Все по често се говори за опазването на околната среда. Проблемите с промените на климата са големи и много хора вече мислят в “зелено”. “Зелени телефони”, “зелени крушки”, “зелени телевизори”… Ние ще ви покажем един зелен компютър.
Идеята се състои в това системата да е максимално енергоспестяваща, но въпреки това да е достатъчно мощна за една сравнително нормална употреба. Тъй като е невъзможно да имаме max мощност и ниско потребление на енергия, ще избегнем допълнителен графичен ускорител, за това ще се доверим на някой вграден.
Eто и нашето предложение:
Intel Core 2 Duo E7200
GiGaByTe GA-EG31MF-S2
4GB RAM
2TB WD Green, 5400rpm
Защо:
Дъното – евтино с вградено видео на интел, с достатъчно богат подбор на процесори, оптимален брой сата конектори, слотове за рам и слотове за допълнителни устройства.
Процесор – двуядрен, много мощен и същевременно икономичен, при включена опция “C1E” на дъното работната му честота се намалява автоматично на 1,6GHz, ниска консумирана мощност в Idle режим, ниста отделяна температура.
HDD – 2TB – предостатъчно, Green серията на WD работи на 5400 оборота, при което потреблението на енергия е намалено драстично
Захранване – едно 250W би свършило предостатъчна работа, но понеже не се намира лесно ще се насочим към Fortron 300W PNR (не толково добро колкото PNF, но за сметка на това зелено)
Резултатите: консумирана мощност 40 – 60W при товар
Как да преброим файловете в дадена директория?
Посочената команда брои файловете и директориите в текущата директоря, в която се намираме.
1 | ls | wc -l |
Пример:
1 2 3 | blagomir@dragonfly:~$ ls | wc -l 73 blagomir@dragonfly:~$ |
rsync – push или pull – Тестът!
След като написах предният пост, реших сам да направя теста споменат там.
/remote/path/
OS: Ubuntu 9.10
CPU: Intel 2.6 GHz
HDD: Hitachi 500 GB (7200 rpm)
/local/path/
OS: Ubuntu 9.10
CPU: Intel Core Duo x 1.86 GHz
HDD: 120 GB (5400 rpm)
Първи опит: rsync pull
Source: /remote/path/
Destination: /local/path/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | blagomir@dragonfly:/storage/test$ rsync --stats -a blagomir@192.168.1.2:/remote/path/ /local/path/ blagomir@192.168.1.2's password: Number of files: 26579 Number of files transferred: 23604 Total file size: 1211767628 bytes Total transferred file size: 1211709797 bytes Literal data: 1211709797 bytes Matched data: 0 bytes File list size: 583070 File list generation time: 0.091 seconds File list transfer time: 0.000 seconds Total bytes sent: 460461 Total bytes received: 1213463704 sent 460461 bytes received 1213463704 bytes 2425422.91 bytes/sec total size is 1211767628 speedup is 1.00 |
До тук приключва и първата част от теста. Лошото е само, че не можах да разбера колко секунди отне въпросният трансфер…
Кратка калкулация 1211709797 / 2425422.91 = 499.587017177 сек.
Втори опит: rsync push
Source: /local/path/
Destination: /remote/path/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | blagomir@dragonfly:/storage/test$ rsync --stats -a /local/path/ blagomir@192.168.1.2:/remote/path/ blagomir@192.168.1.2's password: Number of files: 26574 Number of files transferred: 23604 Total file size: 1211709797 bytes Total transferred file size: 1211709797 bytes Literal data: 1211709797 bytes Matched data: 0 bytes File list size: 588640 File list generation time: 0.001 seconds File list transfer time: 0.000 seconds Total bytes sent: 1213459369 Total bytes received: 460367 sent 1213459369 bytes received 460367 bytes 2469826.52 bytes/sec total size is 1211709797 speedup is 1.00 blagomir@dragonfly:/storage/test$ |
При вторият вариант цифрите са следните:
1211709797 / 2469826.52 = 490.605225585 сек.
Заключение: при проведеният тест се установи, че rsync работи по-бързо при push отколкото при pull. Това се случи при мен с много на брой, но малки файлове.
Ако имате свободно време и желание можете да тествате и вие и да публикувате резултатите си тук.
rsync – push или pull
Показаха ми интересно четиво, което развива теорията, че при работа с rsync е по добре да се теглят (pull) файлове, отколкото да се качват (push).
Някой тествал ли е с големи файлове и ако да, какъв е бил резултата при вас?
В момента провеждам теста и малко по-късно ще публикувам резултатите.
Как да “убием” процес в конзолата?
Как да убием процес, без да знаем неговият PID (proccess id)? Има много начини и ето някои от тях.
Процеса, който ще убием се каза boze
1 | pkill boze |
1 | kill `ps -ef | grep boze | grep -v grep | awk ‘{print $2}’` |
Как да центрираме елемент спрямо друг елемент в сайта?
Отново с MooTools и отново елементарно
1 2 3 4 5 6 7 | var doMove = new Fx.Move($("element")); doMove.start({ relativeTo: document.body, position: 'center', edge: false, offset: {x:0,y:0} }); |
Този скрипт ще центрира посоченият element в центъра на сайта, защото event-a е прикачен към document.body
За да усложним малко “упражнението” може да си направим функция с посоченият по-горе скрипт, която да изпълняваме винаги, когато се премести скрола на сайта или пък се сменят размерите на браузъра.
1 2 3 4 5 6 7 8 9 10 11 12 | function moveToCenter() { var doMove = new Fx.Move($("element")); doMove.start({ relativeTo: document.body, position: "center", edge: false, offset: {x:0,y:0} }); } window.addEvent("resize", moveToCenter()); window.addEvent("scroll", moveToCenter()); |
Прикачаме следните event-и:
– Първият event е за resize на браузър прозореца
– Вторият за scroll-a на страницата.
Как да направим draggable елемент с MooTools?
С MooTools е изключително елементарно да се постигне споменатият ефект на Drag на избран елемент от DOM дървото.
1 2 3 4 5 6 7 8 | $("clickElement").addEvent("mousedown", function(){ var myDrag = $("moveElement").makeDraggable({ onComplete: function(){ myDrag.detach(); } }); myDrag.attach(); }); |
Където clickElement е елемента, върху който ще се кликне с мишката и ще се мести целият moveElement.
Анимирани AJAX GIF loader-и
Може би много от вас знаят за този сайт, но все пак реших да публикувам линк към него, защото винаги ми е бил полезен и не пречи да ми е под ръка ![]()
Чрез него можете да генерирате различни gif loader-и. Тествайте го и ще останете много доволни.
www.ajaxload.info






