Autor |
Mensaje |
pittusa
Técnico Programador
Registrado: Marzo 2010
Mensajes: 157
Edad: 53 Ubicación: Barcelona
|
Comprimir Directorios
Hola.
Con la clase compres comprimo ficheros:
Dim compres as new Compress
Compres.type="zlib"
Compres.file(user.home & "/fichero.jpg",user.home & "/fichero.jpg.gz",Comprimir.max)
pero yo quiero comprimir un directorio.
Estoy haciendo un programa que debe comprimir un directorio y enviarlo por correo.
como puedo comprimir directorios?
gracias
|
#1 Sabado, 31 Julio 2010, 22:40 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
Re: Comprimir Directorios
Hola
Lo puedes hacer tambien a través del comando SHELL si quieres:
Saludos
|
#2 Sabado, 31 Julio 2010, 23:19 |
|
|
pittusa
Técnico Programador
Registrado: Marzo 2010
Mensajes: 157
Edad: 53 Ubicación: Barcelona
|
Re: Comprimir Directorios
Con esto:
DIM directorio AS String
DIM fichero AS String
fichero = "prueba.tgz"
IF Dialog.SelectDirectory() THEN RETURN 'El usuario elige el directorio a comprimir.
directorio = Dialog.Path 'cojo la ruta
SHELL "tar czvf " & fichero & " " & directorio & " "
funciona, pero me comprime desde el directorio home todas las carpetas.
Osea: cuando descomprimo el fichero resultante sale primero la carpeta home, dentro la del usuario, dentro la del escritorio y luego la que eligio.
quiero que el archivo resultante sea el directorio elegido con lo que tiene dentro.
Supongo que debería sacar del dialog solo el nombre del directorio que eligió el usuario y no la ruta.
me estoy empezando a liar.
¿hay alguna manera de obtener el nombre del directorio seleccionado en el dialog? se que del archivo es file.name(dialog.path)
algo como file.directorio(dialog.path)
gracias
|
#3 Sabado, 31 Julio 2010, 23:42 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
Re: Comprimir Directorios
|
#4 Domingo, 01 Agosto 2010, 00:01 |
|
|
pittusa
Técnico Programador
Registrado: Marzo 2010
Mensajes: 157
Edad: 53 Ubicación: Barcelona
|
Re: Comprimir Directorios
me dice esto:
tar: prueba: No se puede stat: No existe el archivo o directorio
tar: Saliendo con fallos debido a errores anteriores
Crea el archivo prueba.tgz pero sin nada dentro.
El directorio que yo escojo tiene ficheros dentro.
Si que va a ser lioso esto de comprimir un directorio, con lo fácil que es comprimir un archivo.
gracias por todo.
|
#5 Domingo, 01 Agosto 2010, 00:19 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
Re: Comprimir Directorios
Hola.
Prueba agregando la función Trim:
Saludos.
PD: No logro replicar tu error, en mi computador funciona. Utilizo Ubuntu 9.10 con gambas 2.21
|
#6 Domingo, 01 Agosto 2010, 02:08 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
Re: Comprimir Directorios
Hola.
Prueba con este codigo:
Saludos
|
#7 Domingo, 01 Agosto 2010, 03:43 |
|
|
pittusa
Técnico Programador
Registrado: Marzo 2010
Mensajes: 157
Edad: 53 Ubicación: Barcelona
|
Re: Comprimir Directorios (solucioado)
Lo he solucionado así:
PUBLIC SUB button1_click()
DIM directorio AS String
DIM fichero AS String
DIM cadena AS String
fichero = "prueba.tgz"
IF Dialog.SelectDirectory() THEN RETURN 'El usuario elige el directorio a comprimir.
directorio = Dialog.Path 'cojo la ruta
cadena = Mid$(directorio, RInStr(directorio, "/") + 1) 'sacamos el nombre del directorio de la ruta
SHELL "cp -R " & directorio & " " & User.home & "" 'COPIO EL DIRECTORIO EN USER.HOME Y LISTO
SHELL "tar czvf " & fichero & " " & cadena & " " 'comprimmimos el directorio
END
COPIANDO EL DIRECTORIO EN LA CARPETA DEL USUARIO.
Asi funciona bien.
Muchas gracias
|
#8 Domingo, 01 Agosto 2010, 10:03 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Comprimir Directorios
Se puede descomprimir en el directorio que quieras con el programa pax. Tienes un ejemplo en la función restaurar() del móduclo comun del proyecto que subí para Copias de Seguridad de bases MySQL.
Échale un vistado. Si no te aclaras con ese código y te sigue interesando el tema, puedo escarbarte el código necesario para hacer la descompresión.
Suerte
=================== No podemos regresar
|
#9 Lunes, 02 Agosto 2010, 12:45 |
|
|
geaplanet
Programador
Registrado: Febrero 2010
Mensajes: 102
Edad: 43
|
Re: Comprimir Directorios
¿Y no sería más sencillo poner delante la dirección de compresión de la siguiente forma?
PUBLIC SUB Button1_Click()
SHELL "cd /home/nombre_de_usuario ;tar czvf paquete.tgz directorio"
END
(suponiendo que la carpeta que quieres comprimir está en la carpeta de algún usuario concreto)
En bash al menos lo haría así.
|
#10 Lunes, 02 Agosto 2010, 15:39 |
|
|
|