<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8365186387112421511</id><updated>2012-02-16T22:39:32.440-02:00</updated><category term='editores'/><category term='audacious'/><category term='linux'/><category term='meio ambiente'/><category term='tecnologia'/><category term='postgresql'/><category term='pirataria'/><category term='bash'/><category term='multimedia'/><category term='humor'/><title type='text'>Alvaro Guimaraes</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://a1986.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://a1986.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Álvaro Guimarães</name><uri>http://www.blogger.com/profile/04832124148670448082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_8JvuYloKufY/SWZBwdfurhI/AAAAAAAAAGo/T5W79nivIKE/S220/bq.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8365186387112421511.post-4354772598353824623</id><published>2009-01-08T16:02:00.002-02:00</published><updated>2009-01-08T16:05:30.585-02:00</updated><title type='text'>PostgreSQL :: Script para backups automáticos</title><content type='html'>Segue script básico que eu uso para configurar backups periódicos no crontab.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;# This program is free software: you can redistribute it and/or modify&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# it under the terms of the GNU General Public License as published by&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# the Free Software Foundation, either version 3 of the License, or&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# (at your option) any later version.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# This program is distributed in the hope that it will be useful,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# GNU General Public License for more details.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# You should have received a copy of the GNU General Public License&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# (c) Copyright Alvaro Guimaraes, 07/01/2009&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# bash em portugues para que o dia da semana esteja em portugues tambem&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;export LC_ALL='pt_BR'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;if [ $UID -ne 0 ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    echo "Voce precisa ser root para executar esse script."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;if [ -z $1 ] || [ `echo -e $1 | cut -d = -f 1` != "--path" ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    if [ ! -w $0 ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        echo "Este script precisa de permissao total."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fi    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    echo -n "Nome do banco: "&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    if [ ! -z $1 ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        database=$1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        echo $database&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        read database&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    lines=( &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    "# Backup do banco de dados: $database"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    "00 12 * * * root `pwd`/backups.sh --path=`pwd` --time=1 --database=$database &gt; /dev/null"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    "00 19 * * * root `pwd`/backups.sh --path=`pwd` --time=2 --database=$database &gt; /dev/null"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    "00 23 * * 1-5 root vacuumdb -U postgres -f -z $database"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    "00 23 * * 6 root vacuumdb -Upostgres -a -f -z"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    "00 07 * * 7 root reindexdb -Upostgres -a &gt; /dev/null"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    for counter in "${lines[@]}";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        echo "$counter" &gt;&gt; /etc/crontab&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    done&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    echo "Feito."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    pgDump=`whereis pg_dump | cut -d ' ' -f 2 `&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    tm=`echo $2 | cut -d = -f 2`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    dtDay=`date | cut -c -3 | tr "[:upper:]" "[:lower:]"`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    db=`echo $3 | cut -d = -f 2`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fName=`echo $1 | cut -d = -f 2`/$dtDay'_'$db$tm'.fc'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    if [ -e $fName ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        echo "rm -f $fName"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    fi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    `$pgDump -U postgres -i -Fc -f $fName $db`&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365186387112421511-4354772598353824623?l=a1986.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://a1986.blogspot.com/feeds/4354772598353824623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8365186387112421511&amp;postID=4354772598353824623&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/4354772598353824623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/4354772598353824623'/><link rel='alternate' type='text/html' href='http://a1986.blogspot.com/2009_01_01_archive.html#4354772598353824623' title='PostgreSQL :: Script para backups automáticos'/><author><name>Álvaro Guimarães</name><uri>http://www.blogger.com/profile/04832124148670448082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_8JvuYloKufY/SWZBwdfurhI/AAAAAAAAAGo/T5W79nivIKE/S220/bq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365186387112421511.post-5970399734530101770</id><published>2009-01-05T21:21:00.003-02:00</published><updated>2009-01-05T21:34:00.439-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Bash :: Teclas de atalho</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Trabalhando com o histórico:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;!!&lt;/span&gt; executa o último comando do history (pronuncia-se "bang bang")&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;!string&lt;/span&gt; executa o comando mais recente que comece com a string&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;!?string&lt;/span&gt; executa o comando mais recente que contenha a string&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;^string1^string2&lt;/span&gt; executa o último comando substituindo string1 por string2 na primeira ocorrência&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Edição de comandos estilo Emacs:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ctrl-L&lt;/span&gt; equivalente ao clear&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ctrl-K&lt;/span&gt; apaga tudo do cursor ao final da linha&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ctrl-Y&lt;/span&gt; cola o que foi apagado com Ctrl+K&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Alt-D&lt;/span&gt; apaga do cursor até o fim da palavra&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ctrl-R&lt;/span&gt; busca palavra recursivamente&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ctrl-S&lt;/span&gt; busca palavra adiante&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365186387112421511-5970399734530101770?l=a1986.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://a1986.blogspot.com/feeds/5970399734530101770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8365186387112421511&amp;postID=5970399734530101770&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/5970399734530101770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/5970399734530101770'/><link rel='alternate' type='text/html' href='http://a1986.blogspot.com/2009_01_01_archive.html#5970399734530101770' title='Bash :: Teclas de atalho'/><author><name>Álvaro Guimarães</name><uri>http://www.blogger.com/profile/04832124148670448082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_8JvuYloKufY/SWZBwdfurhI/AAAAAAAAAGo/T5W79nivIKE/S220/bq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365186387112421511.post-2449704257104143720</id><published>2008-12-26T01:12:00.001-02:00</published><updated>2008-12-26T01:14:16.940-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Natal :: Carta ao papai noel</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tKgqDX4IoqU&amp;hl=pt-br&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/tKgqDX4IoqU&amp;hl=pt-br&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365186387112421511-2449704257104143720?l=a1986.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://a1986.blogspot.com/feeds/2449704257104143720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8365186387112421511&amp;postID=2449704257104143720&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/2449704257104143720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/2449704257104143720'/><link rel='alternate' type='text/html' href='http://a1986.blogspot.com/2008_12_01_archive.html#2449704257104143720' title='Natal :: Carta ao papai noel'/><author><name>Álvaro Guimarães</name><uri>http://www.blogger.com/profile/04832124148670448082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_8JvuYloKufY/SWZBwdfurhI/AAAAAAAAAGo/T5W79nivIKE/S220/bq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365186387112421511.post-6106563470669960105</id><published>2008-12-25T21:38:00.006-02:00</published><updated>2008-12-26T01:16:02.521-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><category scheme='http://www.blogger.com/atom/ns#' term='audacious'/><title type='text'>Controle da raiva :: Ouvindo música de um pen drive sem interrupções</title><content type='html'>Estava tendo problemas sérios de raiva enquanto tentava ouvir música no meu Eee PC direto do meu pen drive de 8GB.&lt;br /&gt;&lt;br /&gt;Nos dois players em que tentava ouvir músicas (Rhytmbox e VLC) elas eram interrompidas constantemente por conta da lentidão do pendrive e do tamanho mínimo do buffer desses players.&lt;br /&gt;&lt;br /&gt;Tentei configurar o tamanho do buffer nos dois porém não consegui. (se tiver como me alertem sobre minha incompetência)&lt;br /&gt;&lt;br /&gt;Dos que testei, encontrei o Audacious, que tem essas configurações.&lt;br /&gt;&lt;br /&gt;Vá em &lt;span style="font-weight: bold;"&gt;Preferences-&gt;Audio-&gt;Mixing buffer size (ms)&lt;/span&gt; e aumente o buffer.&lt;br /&gt;Eu coloquei para 1500ms. Exagerado, mas funciona.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365186387112421511-6106563470669960105?l=a1986.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://a1986.blogspot.com/feeds/6106563470669960105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8365186387112421511&amp;postID=6106563470669960105&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/6106563470669960105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/6106563470669960105'/><link rel='alternate' type='text/html' href='http://a1986.blogspot.com/2008_12_01_archive.html#6106563470669960105' title='Controle da raiva :: Ouvindo música de um pen drive sem interrupções'/><author><name>Álvaro Guimarães</name><uri>http://www.blogger.com/profile/04832124148670448082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_8JvuYloKufY/SWZBwdfurhI/AAAAAAAAAGo/T5W79nivIKE/S220/bq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365186387112421511.post-6448663546073772607</id><published>2008-12-11T16:40:00.006-02:00</published><updated>2008-12-18T00:26:57.779-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='pirataria'/><category scheme='http://www.blogger.com/atom/ns#' term='meio ambiente'/><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>Meio ambiente :: Colabore</title><content type='html'>&lt;div style="TEXT-ALIGN: left"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8JvuYloKufY/SUFfqQvmgNI/AAAAAAAAAFM/USnaFepS7-M/s1600-h/pirataria"&gt;&lt;img id="BLOGGER_PHOTO_ID_5278605417908699346" style="WIDTH: 260px; CURSOR: pointer; HEIGHT: 201px" alt="" src="http://3.bp.blogspot.com/_8JvuYloKufY/SUFfqQvmgNI/AAAAAAAAAFM/USnaFepS7-M/s400/pirataria" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365186387112421511-6448663546073772607?l=a1986.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://a1986.blogspot.com/feeds/6448663546073772607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8365186387112421511&amp;postID=6448663546073772607&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/6448663546073772607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/6448663546073772607'/><link rel='alternate' type='text/html' href='http://a1986.blogspot.com/2008_12_01_archive.html#6448663546073772607' title='Meio ambiente :: Colabore'/><author><name>Álvaro Guimarães</name><uri>http://www.blogger.com/profile/04832124148670448082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_8JvuYloKufY/SWZBwdfurhI/AAAAAAAAAGo/T5W79nivIKE/S220/bq.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8JvuYloKufY/SUFfqQvmgNI/AAAAAAAAAFM/USnaFepS7-M/s72-c/pirataria' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365186387112421511.post-2053905884885702765</id><published>2008-07-01T13:25:00.005-03:00</published><updated>2008-07-01T16:59:30.358-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>PostgreSQL :: Manipulando backups</title><content type='html'>Seguem alguns procedimentos que eu utilizo no dia-a-dia para manipular backups do postgresql.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Gerar backup em formato plain text:&lt;/span&gt;&lt;br /&gt;pg_dump -U usuario banco &gt; arquivo.sql&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Gerar backup em formato próprio para o pg_restore:&lt;/span&gt;&lt;br /&gt;pg_dump -U usuario -Fc -f arquivo.backup banco&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Restaurar arquivo binário ( gerado com -Fc ) e redirecionando erros para um log:&lt;/span&gt;&lt;br /&gt;pg_restore -U usuario -d banco arquivo.backup 2&gt; erros.log&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Restaurar arquivos em formato plain text:&lt;/span&gt;&lt;br /&gt;psql -U usuario banco &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Gerar um arquivo plain text com a estrutura de uma tabela específica:&lt;/span&gt;&lt;br /&gt;pg_dump -U usuario -s -t tabela banco &gt; arquivo.sql&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Gerar um arquivo plain text com os dados de uma tabela específica:&lt;/span&gt;&lt;br /&gt;pg_dump -U usuario -a -d -t tabela banco &gt; arquivo.sql&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Gerar backup de todo o cluster (todos os bancos de dados):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Não é recomendado ( e nem inteligente ) usar o pg_dump para copiar todos os bancos de dados de um cluster. Para isso existe o pg_dumpall que além de copiar tudo preserva os dados do agrupamento como usuários e grupos.&lt;/span&gt;&lt;br /&gt;pg_dumpall -U usuario &gt; arquivo.sql&lt;br /&gt;Esse exemplo gera um arquivo plain text.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Trabalhando com backups maiores que o sistema pode suportar:&lt;/span&gt;&lt;br /&gt;O PostgreSQL pode suportar tabelas maiores que o tamanho máximo de arquivos que o seu sistema suporta. Porém é bem problemático trabalhar com backups de tabelas que tem essa característica. Por isso o pg_dump grava no stdout para que possamos trabalhar com ferramentas de compressão por exemplo.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Usando gzip:&lt;/span&gt;&lt;br /&gt;pg_dump -U usuario banco | gzip &gt; arquivo.gz&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Restaurando:&lt;/span&gt;&lt;br /&gt;createdb -U postgres banco&lt;br /&gt;gunzip -c arquivo.gz | psql banco&lt;br /&gt;ou&lt;br /&gt;cat arquivo.gz | gunzip | psql banco&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Você também pode usar o comando split para dividir o arquivo de acordo com o tamanho que você preferir:&lt;/span&gt;&lt;br /&gt;pg_dump banco | split -b 1m - arquivo&lt;br /&gt;Isso irá dividir o backup em arquivos de 1 mega.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Para restaurar:&lt;/span&gt;&lt;br /&gt;createdb banco&lt;br /&gt;cat arquivo* | psql banco&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Convertendo backups binários para plain text:&lt;/span&gt;&lt;br /&gt;pg_restore -U usuario -Fc arquivo.backup &gt; arquivoPlainText.sql&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365186387112421511-2053905884885702765?l=a1986.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://a1986.blogspot.com/feeds/2053905884885702765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8365186387112421511&amp;postID=2053905884885702765&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/2053905884885702765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/2053905884885702765'/><link rel='alternate' type='text/html' href='http://a1986.blogspot.com/2008_07_01_archive.html#2053905884885702765' title='PostgreSQL :: Manipulando backups'/><author><name>Álvaro Guimarães</name><uri>http://www.blogger.com/profile/04832124148670448082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_8JvuYloKufY/SWZBwdfurhI/AAAAAAAAAGo/T5W79nivIKE/S220/bq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365186387112421511.post-3285414744454362050</id><published>2008-04-18T08:46:00.006-03:00</published><updated>2008-07-01T13:35:49.878-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='editores'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Vim :: Agilizando tarefas simples</title><content type='html'>O único objetivo deste artigo é agilizar tarefas do dia-a-dia; coisas que você fazia sem pensar no notepad e tem dificuldade pra reproduzir no vim. Não farei comparações entre editores, muito menos ensinarei a transformar o vim numa IDE poderosa; coisa que nós sabemos que ele pode fazer. Boa leitura.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;.vimrc&lt;/strong&gt;&lt;br /&gt;O .vimrc é o arquivo que guarda configurações do vim. Tudo o que estiver nele será carregado assim que o vim for aberto.&lt;br /&gt;Para que ele seja carregado você pode criá-lo no seu diretório home:&lt;br /&gt;&lt;code&gt;touch ~/.vimrc&lt;/code&gt;&lt;br /&gt;Segue a cópia do meu .vimrc:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;" Modo de compatibilidade desligado&lt;br /&gt;set nocompatible&lt;br /&gt;" Auto indent, para identar o texto automaticamente.&lt;br /&gt;set ai&lt;br /&gt;" Exibir os números das linhas&lt;br /&gt;set number&lt;br /&gt;" Para o backspace trabalhar normalmente&lt;br /&gt;set backspace=2&lt;br /&gt;" Deixar tudo colorido&lt;br /&gt;syntax on&lt;br /&gt;" Atalhos para fazer WQ (maiúsculos) também funcionarem como write e quit&lt;br /&gt;cab W  w&lt;br /&gt;cab Wq wq&lt;br /&gt;cab wQ wq&lt;br /&gt;cab WQ wq&lt;br /&gt;cab Q  q&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;em&gt;Observação: Todas as linhas que começam com aspas são comentários.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Interpretando os comandos&lt;/strong&gt;&lt;br /&gt;A tecla Control será representada neste artigo com o caracter &lt;strong&gt;&lt;code&gt;^&lt;/code&gt;&lt;/strong&gt;.  Portanto Ctrl+C será representado assim:&lt;br /&gt;&lt;code&gt;^C&lt;/code&gt;&lt;br /&gt;Uma tecla específica será representada entre os caracteres &lt;strong&gt;&lt;code&gt;&lt;&gt;&lt;/code&gt;&lt;/strong&gt;. Portanto ESC será representado como:&lt;br /&gt;&lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Modo de inserção e modo de comando&lt;/strong&gt;&lt;br /&gt;No modo de inserção é que você digitará textos. Quando você entra no vim, ele está no modo de comando; para entrar no modo de inserção simplesmente tecle &lt;strong&gt;&lt;code&gt;i&lt;/code&gt;&lt;/strong&gt;. A mensagem &lt;strong&gt;&lt;code&gt;-- INSERT --&lt;/code&gt;&lt;/strong&gt; deverá aparecer no rodapé. Agora é só digitar o texto normalmente como em qualquer outro editor.&lt;br /&gt;&lt;br /&gt;Para voltar ao modo de comando, tecle &lt;strong&gt;&lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt;&lt;/strong&gt;.  Como o nome já diz é no modo de comando em que as operações são realizadas. Como por exemplo copiar e colar, sair e salvar.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Entrar, sair e salvar.&lt;/strong&gt;&lt;br /&gt;Para abrir um arquivo no vim apenas passe o nome do arquivo como parâmetro:&lt;br /&gt;&lt;code&gt;vim teste.out&lt;/code&gt;&lt;br /&gt;Para sair sem salvar esteja no modo de comando e use o comando &lt;strong&gt;&lt;code&gt;q&lt;/code&gt;&lt;/strong&gt; seguido de &lt;strong&gt;&lt;code&gt;!&lt;/code&gt;&lt;/strong&gt;.&lt;br /&gt;Para salvar use o comando &lt;strong&gt;&lt;code&gt;w&lt;/code&gt;&lt;/strong&gt;.&lt;br /&gt;Para sair e salvar use &lt;strong&gt;&lt;code&gt;wq&lt;/code&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Comandos básicos que você &lt;em&gt;precisa&lt;/em&gt; saber.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Copiar a linha atual: &lt;strong&gt;&lt;code&gt;yy&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Copiar da posição atual até o início do arquivo: &lt;strong&gt;&lt;code&gt;ygg&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Copiar da posição atual até o fim do aquivo: &lt;strong&gt;&lt;code&gt;yG&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Copiar da posição atual até o início da linha: &lt;strong&gt;&lt;code&gt;y^&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Copiar da posição atual até o fim da linha: &lt;strong&gt;&lt;code&gt;y$&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Recortar a linha atual: &lt;strong&gt;&lt;code&gt;dd&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Recortar da posição atual até o início do arquivo: &lt;strong&gt;&lt;code&gt;dgg&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Recortar da posição atual até o fim do aquivo: &lt;strong&gt;&lt;code&gt;dG&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Recortar da posição atual até o início da linha: &lt;strong&gt;&lt;code&gt;d^&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Recortar da posição atual até o fim da linha: &lt;strong&gt;&lt;code&gt;d$&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Recortar também pode ser usado para simplesmente deletar o conteúdo.&lt;br /&gt;&lt;br /&gt;Colar na linha de baixo: &lt;strong&gt;&lt;code&gt;p&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Colar na linha de cima: &lt;strong&gt;&lt;code&gt;P&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Desfazer (equivalente ao CTRL+Z do Windows): &lt;strong&gt;&lt;code&gt;u&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Desfazer todas as mudanças da última linha: &lt;strong&gt;&lt;code&gt;U&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;Desfazer o último desfazer: &lt;strong&gt;&lt;code&gt;^R&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Quando você conseguir usar isso sem pensar muito já vai estar familiarizado com o vim.&lt;br /&gt;Você pode encontrar artigos sobre recursos mais avançados nas referências.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Referências&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://pt.wikibooks.org/wiki/Vim"&gt;http://pt.wikibooks.org/wiki/Vim&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aurelio.net/vim/"&gt;http://aurelio.net/vim/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365186387112421511-3285414744454362050?l=a1986.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://a1986.blogspot.com/feeds/3285414744454362050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8365186387112421511&amp;postID=3285414744454362050&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/3285414744454362050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365186387112421511/posts/default/3285414744454362050'/><link rel='alternate' type='text/html' href='http://a1986.blogspot.com/2008_04_01_archive.html#3285414744454362050' title='Vim :: Agilizando tarefas simples'/><author><name>Álvaro Guimarães</name><uri>http://www.blogger.com/profile/04832124148670448082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_8JvuYloKufY/SWZBwdfurhI/AAAAAAAAAGo/T5W79nivIKE/S220/bq.jpg'/></author><thr:total>1</thr:total></entry></feed>
