Servidor montado... e agora para zipar?

Iniciado por jdn76, 13 de Janeiro de 2009, 19:38

tópico anterior - próximo tópico

jdn76

Olá instalei um servidor ubuntu 8.04 lts, baseado mais ou menos nesse tutorial:

http://www.howtoforge.com/ubuntu-home-fileserver


para uso em casa. A questão é:

como eu zipo no formato zip mesmo, vários arquivos, pastas em um unico arquivo?
ex: /home/usuario/arquivos

no caso queria comprimir a pasta arquivos e gravar na partição /backup.

Como fazer isso?

Já tentei fazer mas sem sucesso.


Agradeço vossa ajuda.

felipeborges

Meu blog sobre GNU/Linux
Debian Lenny e Gentoo.

Felix

Já que você instalou um servidor e deseja compactar arquivos, pode usar os formatos tar.gz ou tar.bz2 já do linux mesmo, sem precisar instalar nenhum outro programa adicional, segue abaixo uma 'breve' explicação:

Usuários windows estão acostumados com interfaces gráficas e dois programas que são dominantes na área de compactação são: winzip e winrar, então quando chegam ao Linux deparam-se com arquivos em formato .tar.gz e tar.bz2 para intalar algum programa ficam meio que perdidos (eu fiquei por muito tempo assim), claro que pela interface gráfica podemos dar 2 cliques e descompactar os arquivos normalmente na maioria das distribuições, mas e pelo modo texto?

Ao se deparar com um arquivo em formato .tar.gz utilize o seguinte comando:

Citar
   tar -zxvf nomedoarquivo.tar.gz

Se a extensão for .tar.bz2 só um detalhe mudará:

Citar
   tar -jxvf nomedoarquivo.tar.bz2

Prestando atenção somente substituimos a letra "z" (usada para arquivos tar.gz) por "j" (para arquivos tar.bz2). As outras letras dos parâmetros tem o seguinte significado:

   x - vem de extract - então estamos dizendo que o comando irá extrair o conteúdo do arquivo;

   v - verbose;

   f - file - para indicação de arquivo; (Muito bem corrigido pelo amigo Bruno através dos comentários)

Caso queiram compactar arquivos utilizando o tar, basta substituir a letra "x" de extract por "c" de "create", ficando os comandos dessa forma:

Citar
   tar -zcvf arquivoasercriado.tar.gz /caminho/de/origem/*

ou

Citar
   tar -jcvf arquivoasercriado.tar.bz2 /caminho/de/origem/*

fonte

jdn76

Olá, obrigado pelas respostas. Pelo que pude constatar ao zipar em ZIP ele comprime e abre direto no windows, porém ele perde as propriedades de palavras acentuadas, enquanto no tar.gz ele não perde quando se comprime e depois volta a descomprimir.
Portanto, vou optar pelo tar.gz. A questão é:

como comprimo a pasta arquivos em tar.gz que está em /home/usuario/arquivos e que esse arquivo vá direto para o HD secundário no PC no qual dei partição /backup?


Grato pela ajuda!

Felix

mais ou meno assim:

tar -zcvf /backup/arquivoasercriado.tar.gz /home/usuario/arquivos/*

jdn76

Olá! Blz... deu certo o comando que vc deu... foi direto para o /backup em formato tar.gz

Agora outra questão, sobre o agendamento, sei que tem que ir em crontab -e, mas já andei pesquisando e me parece um pouco confuso... no caso para agendar a tarefa:

tar -zcvf /backup/arquivoasercriado.tar.gz /home/usuario/arquivos/*

no cron, para realizar todos os dias, 1h da manhã como teria que ficar o comando no crontab?


Desde já grato!

Felix

A instrução para o crontab segue esta sequência:

Citar
minuto ........0-59
hora ..........0-23
dia do mes ....1-31
mes ...........1-12
dia da semana..0-7 ( 0 ou 7 é domingo ou use nomes)

Então o que você quer é o seguinte:

00 1 * * * tar -zcvf /backup/arquivoasercriado.tar.gz /home/usuario/arquivos/*

jdn76

Olá, já tentei dessa forma mas ele não criou... não fez nada...

Se eu digitar manualmente o comando tar cria normal... mas no cron ele nada faz.


Já andei pesquisando na internet mas do que testei não funcionou.


Agradecia ajuda.

Felix


jdn76


jdn76

Olá, só para adiciona no crontab -e experimentei da seguinte forma:

08 13 * * * cp -R /home/servidor /backup


e ele copiou os arquivos de um HD para outro sem problemas, porém o problema é que perde permissões... acentos em arquivos. Por isso queria usar o tar.gz, mas ele não está realizando a tarefa no crontab.

Felix

por algum acaso, este outro HD está em formato NTFS ou outro diferente do HD de origem?

jdn76

Está no mesmo PC, como HD secundário e está no formato EXT3.

jdn76

Olá, já consegui fazer pelo cron porém há algo errado. Verifique:

root@homeserver:/backup# ls -la
total 68424
drwxr-xr-x  3 root root     4096 2009-01-14 15:21 .
drwxr-xr-x 24 root root     4096 2009-01-13 14:20 ..
-rw-r--r--  1 root root 52567730 2009-01-14 15:22 clientes2.tar.gz
-rw-r--r--  1 root root 17391207 2009-01-14 15:20 clientes.tar.gz
drwx------  2 root root    16384 2009-01-12 14:48 lost+found


veja a diferença do tamanho do arquivo clientes.tar.gz para clientes2.tar.gz
O clientes.tar.gz foi feito por agendamento e ficou menor. E o clientes2.tar.gz foi feito manual

tar -zcvf /backup/...

em ambos os casos foi usado os comandos tar -zcvf. Porque um fica menor que o outro? Porque o tar no crontab ficou com uma diferença tão grande no arquivo uma vez que foi usado os mesmos comandos tanto para manual quer para agendado? É isso que não entendo.

Felix

Também não sei, mas estou estudando o caso aqui para ver se consigo alguma resposta...