miércoles, 19 de diciembre de 2018

Qué es el Comando Wget

Está Escrito:
"Pídeme, y te daré por herencia las naciones, Y como posesión tuya los confines de la tierra." (Salmos 2:8)
Tomado de :hostinger
Esta guía te mostrará cómo usar el comando wget Linux. También te proporcionaremos 12 ejemplos útiles de comandos wget. Al final, sabrás todo sobre el comando wget y podrás usarlo para descargar archivos de Internet.
¿Qué es el Comando Wget?
Wget es una herramienta informática creada por el Proyecto GNU. Puedes usarlo para recuperar contenido y archivos de varios servidores web. El nombre es una combinación de World Wide Web y la palabra get. Admite descargas a través de FTP, SFTP, HTTP y HTTPS.
Wget se crea en C portátil y se puede usar en cualquier sistema Unix. También es posible implementarlo en Mac OS X, Microsoft Windows, AmigaOS y otras plataformas populares.

¿Cómo instalar Wget?

Para esta demostración del comando wget, usaremos Ubuntu 16.04. Pero la sintaxis también funcionará en cualquier otra versión de Linux.
En primer lugar, accede a tu servidor a través de SSH. Ejecuta el siguiente comando para instalar wget en su sistema:
  1. apt-get install wget
Una vez que finalice la configuración, estará listo para usarlo. Además, el conocimiento de los comandos básicos de SSH puede facilitar las cosas.

Ejemplos de Comandos Wget

Para comenzar, proporcionaremos 12 ejemplos de comandos wget que puedes usar en tareas cotidianas. ¡Ten en cuenta que también puedes llamar a esta función desde scripts y cron jobs!

Usando el comando Wget para descargar archivos individuales

Uno de los ejemplos más básicos del comando wget es descargar un único archivo y almacenarlo en su directorio de trabajo actual. Por ejemplo, puede obtener la última versión de WordPress usando lo siguiente:
  1. wget https://wordpress.org/latest.zip
Aquí está el resultado que verás:
  1. --2018-02-23 12:53:10-- https://wordpress.org/latest.zip
  2. Resolving wordpress.org (wordpress.org)... 198.143.164.252
  3. Connecting to wordpress.org (wordpress.org)|198.143.164.252|:443... connected.
  4. HTTP request sent, awaiting response... 200 OK
  5. Length: 9332728 (8,9M) [application/zip]
  6. Saving to: 'latest.zip'
  7. latest.zip 100%[===================>] 8,90M 6,88MB/s in 1,3s
  8. 2018-02-23 12:53:14 (6,88 MB/s) - 'latest.zip' saved [9332728/9332728]
En este ejemplo, se descargará un archivo llamado latest.zip en el directorio de trabajo actual. También verá información adicional, como el progreso de la descarga, la velocidad, el tamaño, la hora y la fecha.
Usando el comando Wget para descargar varios archivos
Podemos llevar el uso de wget un paso más allá y descargar múltiples archivos a la vez. Para hacer esto, necesitaremos crear un documento de texto y ubicar las URL de descarga allí. En este ejemplo, recuperaremos las últimas versiones de WordPressJoomla y Drupal. Introduzca la siguiente:
  1. nano example.txt
Esto creará un archivo example.txt y abrirá una interfaz de editor de texto. Pega estos enlaces allí:
  1. https://wordpress.org/latest.zip
  2. https://downloads.joomla.org/cms/joomla3/3-8-5/Joomla_3-8-5-Stable-Full_Package.zip
  3. https://ftp.drupal.org/files/projects/drupal-8.4.5.zip
Una vez hecho esto, puede usar -i para obtener todos los archivos almacenados en tu archivo de texto de ejemplo:
  1. wget -i example.txt
Espera a que el proceso finalice y tendrsá las instalaciones de los tres sistemas de administración de contenido más populares.

Usar el comando Wget para obtener archivos bajo nombres diferentes

En este ejemplo de wget, guardaremos un archivo usando un nombre diferente con la ayuda de la opción -O:
  1. wget -O wordpress-install.zip https://wordpress.org/latest.zip
En este caso, el recurso descargado se guardará como wordpress-install.zip en lugar de su nombre original.

Usar el comando Wget para guardar archivos en el directorio especificado

Puedes utilizar wget para colocar un archivo en otro directorio usando la función -P:
  1. wget -P documents/archives/ https://wordpress.org/latest.zip
El archivo que recuperes usando esta sintaxis aparecerá en documentos/archivos/ carpeta.

Usar el comando Wget para limitar la velocidad de descarga

Con wget, también puedes limitar la velocidad de descarga. Esto es útil cuando recuperas archivos grandes y evitará que use todo tu ancho de banda. Este ejemplo de wget establecerá el límite a 500k:
  1. wget --limit-rate=500k https://wordpress.org/latest.zip

Uso del comando Wget para establecer cantidad de reintento

Los problemas de conexión a Internet pueden hacer que la descarga se interrumpa. Para abordar este problema, podemos aumentar la cantidad de reintentos usando la función -tries:
  1. wget -tries=100 https://wordpress.org/latest.zip

Usar el comando Wget para descargas en segundo plano

Para archivos extremadamente grandes, puede aprovechar la función -b. Descargará su contenido en segundo plano.
  1. wget -b http://example.com/beefy-file.tar.gz
Un wget-log aparecerá en tu directorio de trabajo, que se puede usar para verificar el progreso y el estado de tu descarga. Este comando también hará el truco:
  1. tail -f wget-log

Usando el comando Wget para descargar a través de FTP

El comando también se puede usar con FTP. Solo necesitarás especificar el nombre de usuario y la contraseña como en este ejemplo de wget:
  1. wget --ftp-user=YOUR_USERNAME --ftp-password=YOUR_PASSWORD ftp://example.com/something.tar

Usando el comando Wget para continuar las descargas interrumpidas

Tu descarga puede interrumpirse si pierdes la conexión a Internet o experimenta un corte de energía. Esto es bastante frecuente cuando se obtienen archivos enormes. En lugar de comenzar de nuevo, es posible continuar la descarga usando la función -c:
  1. wget -c https://example/very-big-file.zip
Si continúas sin la función -c, el nuevo archivo tendrá .1 agregado al final tal como ya existe.

Usando el comando Wget para recuperar sitios web completos

También es posible usar el comando wget para descargar el contenido de un sitio completo. Esto le permitirá verlo localmente sin una conexión a Internet. Aquí hay un ejemplo:
  1. wget --mirror --convert-links --page-requisites --no-parent -P documents/websites/ https://some-website.com
Analicemos los ingredientes de este comando wget:
-mirror Hace que la descarga sea recurrente.
-convert-links Todos los enlaces se convertirán para un uso fuera de línea.
-page-requisities Lo siguiente incluirá todos los archivos necesarios tales como CSS, JS e imágenes.
-no-parent Asegura que los directorios que están por encima de la jerarquía no se recuperen.
-P  Esto asegura que todo el contenido vaya a nuestro directorio especificado.
Una vez que el proceso finalice, podrás abrir el sitio web descargado localmente y encontrar todos los archivos en documentos/sitios web/ carpeta.

Usando el comando Wget para localizar enlaces rotos

Intentemos algo más avanzado. Podemos usar el comando wget para localizar todas las URL rotas que muestran el error 404 en un sitio web específico. Comienza ejecutando lo siguiente:
  1. wget -o wget-log -r -l 5 --spider http://example.com
-o Recopila la salida en un archivo para su uso posterior.
-l Especifica el nivel de recurrencia.
-r Hace que la descarga sea recurrente.
-spider Configura wget en el modo araña.
Ahora podemos investigar el archivo wget-log para encontrar la lista de enlaces rotos. Aquí está el comando para hacerlo:
  1. grep -B 2 '404' wget-log | grep "http" | cut -d " " -f 4 | sort -u

Usando el comando Wget para descargar archivos numerados

Si tienes archivos o imágenes numeradas en una lista determinada, puedes descargarlas fácilmente con la siguiente sintaxis:
  1. wget http://example.com/images/{1..50}.jpg

Conclusión

¡Felicitaciones! Al completar este Tutorial, haz aprendido varios usos para el comando wget. Ahora puedes utilizarlo para obtener uno o varios archivos. Además, haz aprendido algunos usos avanzados, como la descarga de un sitio web completo o la localización de URL rotas. Para obtener más información, también puede consultar la documentación oficial.
¿Hay algún truco o consejo oculto que deseas compartir? ¡Siéntase libre de hacerlo en los comentarios a continuación!

miércoles, 1 de agosto de 2018

Algunas caracteristicas de GNU-Linux

Está Escrito:
Muy cierto; fueron desgajadas por su incredulidad, pero tú por la fe te mantienes firme. No seas altanero, sino teme;(Romanos 11:20)

Tomado de: Taringa
Mencionaremos ahora algunas de las características que hacen a GNU/Linux uno de 
los sistemas operativos más robustos y flexibles que existen actualmente: 

➢ Multitarea: quiere decir que se pueden ejecutar varias tareas y se puede 
acceder a varios dispositivos al mismo tiempo. 

➢ Utiliza Memoria Virtual: Linux puede usar una porción de espacio en disco 
como memoria ram, lo que aumenta la eficiencia del sistema al mantener los procesos activos en la memoria física y el resto en ésta memoria. 

➢ Multiusuario: Linux permite que varios usuarios accedan a su sistema en 
forma simultánea sin que existan conflictos entre los mismos, y a su vez cada uno de ellos cuente con su espacio de trabajo. 

➢ Su código fuente es libre: El kernel de Linux y la gran mayoría de sus 
aplicaciones se encuentran liberados. 

➢ Adaptabilidad: Linux puede ejecutar una amplia variedad de software, 
disponible gracias al proyecto GNU. Este software es muy diverso, incluyendo desde aplicaciones para desarrollo, herramientas para la administración del sistema y juegos, entre otros. 

➢ Estabilidad: Linux presenta una gran estabilidad en la gestión de sus procesos 
internos del sistema. Es muy difícil conseguir que una computadora con Linux se “cuelgue”. 

➢ Defensa contra Virus: Aunque la mayor parte de los virus que rondan por 
Internet son desarrollados para Windows, es cierto que, en teoría, existen algunos para Linux, pero son más difíciles de crear debido a que Linux emplea  un sistema de permisos de archivos previendo los posibles desastres que se ven todos los días en los entornos de Windows y principalmente la comprometida  comunidad de desarrolladores de GNU/Linux se encargan de corregir los posibles errores de seguridad en tiempo óptimo. 

➢ Cuenta con una gran Comunidad de Usuarios: Linux posee una comunidad 
de gente distribuida alrededor del mundo que brindan ayuda a las personas que desean introducirse en este mundo. Brindando capacitaciones, elaborando manuales o ayudando en la instalación del mismo. 


5 características específicas de GNU/Linux que lo diferencian

1- Software libre

– Conjunto de software (programa informático) que por elección manifiesta de su autor, puede ser copiado, estudiado, modificado, utilizado libremente con cualquier fin y redistribuido con o sin cambios o mejoras.es.wikipedia.org

2- Consola

– La consola o terminal es un gran acceso al sistema operativo GNU/Linux, permite interaccionar con el sistema en modo comando y permite realizar cualquier tarea de cualquier nivel, desde aplicar comandos básicos o instalar programas, hasta realizar todas las tareas de un administrador de sistemas.

3- Sabores o distribución 

– Te permiten poder elegir tu distribución favorita ya compilada y optimizada, distribuida mediante una imagen ISO. El sabor se caracteriza por un entorno gráfico determinado con sus funcionalidades especificas y cientos de paquetes de software incorporados.
– Algunos de los sabores más utilizados son xfce, Mate, KDE, Cinnamon. En mi caso mi distribución favorita de GNU/Linux es Ubuntu y mi sabor favorito es el Mate.

4- Comportamiento

– Los usuarios de GNU/Linux no necesitamos reiniciar el ordenador con cada actualización que instalamos.
– Los usuarios de GNU/Linux no necesitamos instalar drivers cada vez que pinchamos un dispositivo USB en el ordenador.
– Los usuario de GNU/Linux no experimentamos la pesadez de ver como se abren programas solos cuando conectamos un CD o un USB al ordenador.
– Los usuarios de GNU/Linux podemos no apagar el ordenador durante meses y seguirá operando a la misma velocidad.

5- Licencias

– Los usuarios de GNU/Linux no pagamos licencias, utilizamos y difundimos el software libre GNU/Linux para ayudar a su crecimiento y expansión desde muchos ámbitos grandes y pequeños y ayudar a la consolidación de este estilo de vida.

5 características específicas de GNU/Linux – Conclusiones

  • GNU/Linux es software libre, podemos probarlo, trastear con él, investigarlo, incluso sin ningún riesgo utilizando una maquina virtual, desde aquí puedes acceder al post de mi blog donde te explico que es una maquina virtual y como instalar GNU/Linux de manera virtualizada en tu ordenador físico sin riesgos.
  • GNU/Linux tiene un arma muy poderosa, la consola o terminal, es un Ferrari que marca las diferencias con otros sistemas operativos tradicionales en el sector de ordenadores de escritorio.
  • GNU/Linux implementa sabores. Permite elegir la distribución a instalar (empaquetado del sistema operativo, normalmente en formato de archivo de imagen ISO para descargar) y permite elegir dentro de la distribución a descargar, que sabor (entorno gráfico, funcionalidades especificas, comportamiento, requerimientos de hardware ). Multitud de posibilidades de configuración y usabilidad del sistema.
  • GNU/Linux comportamiento. No necesita ser reiniciado constantemente, puede estar meses sin ser apagado funcionando a la misma velocidad. No requiere ser reiniciado cada vez que hacemos una actualización, tampoco instalar drivers cada vez que conectamos un dispositivo USB.
  • GNU/Linux no requiere compra de licencias para su uso, ni para el sistema operativo, ni para las decenas de miles de programas y aplicaciones que se pueden instalar y utilizar.

martes, 10 de julio de 2018

Trabajar con GIT

Está Escrito:
Porque tú me sacaste del seno materno; me hiciste confiar desde los pechos de mi madre. A ti fui entregado desde mi nacimiento; desde el vientre de mi madre tú eres mi Dios.
Tomado de: Wikipedia y git-scm

Git (pronunciado "guit"2​) es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente. Su propósito es llevar registro de los cambios en archivos de computadora y coordinar el trabajo que varias personas realizan sobre archivos compartidos.

Al principio, Git se pensó como un motor de bajo nivel sobre el cual otros pudieran escribir la interfaz de usuario o front end como Cogito o StGIT3​ Sin embargo, Git se ha convertido desde entonces en un sistema de control de versiones con funcionalidad plena. 4​ Hay algunos proyectos de mucha relevancia que ya usan Git, en particular, el grupo de programación del núcleo Linux.
El mantenimiento del software Git está actualmente (2009) supervisado por Junio Hamano, quien recibe contribuciones al código de alrededor de 280 programadores. En cuanto a derechos de autor Git es un software libre distribuible bajo los términos de la versión 2 de la Licencia Pública General de GNU.

Caracteristicas:
El diseño de Git se basó en BitKeeper y en Monotone56​ Originalmente fue diseñado como un motor de sistema de control de versiones de bajo nivel sobre el cual otros podrían codificar interfaces frontales, tales como Cogito o StGIT.7​ Desde ese entonces hasta ahora el núcleo del proyecto Git se ha vuelto un sistema de control de versiones completo, utilizable en forma directa.8
Linus Torvalds buscaba un sistema distribuido que pudiera usar en forma semejante a BitKeeper, pero ninguno de los sistemas bajo software libre disponibles cumplía con sus requerimientos, especialmente en cuanto a desempeño. El diseño de Git mantiene una enorme cantidad de código distribuida y gestionada por mucha gente, que incide en numerosos detalles de rendimiento, y de la necesidad de rapidez en una primera implementación.
Entre las características más relevantes se encuentran:
  • Fuerte apoyo al desarrollo no lineal, por ende rapidez en la gestión de ramas y mezclado de diferentes versiones. Git incluye herramientas específicas para navegar y visualizar un historial de desarrollo no lineal. Una presunción fundamental en Git es que un cambio será fusionado mucho más frecuentemente de lo que se escribe originalmente, conforme se pasa entre varios programadores que lo revisan.
  • Gestión distribuida. Al igual que DarcsBitKeeperMercurialSVKBazaar y Monotone, Git le da a cada programador una copia local del historial del desarrollo entero, y los cambios se propagan entre los repositorios locales. Los cambios se importan como ramas adicionales y pueden ser fusionados en la misma manera que se hace con la rama local.
  • Los almacenes de información pueden publicarse por HTTPFTPrsync o mediante un protocolo nativo, ya sea a través de una conexión TCP/IP simple o a través de cifrado SSH. Git también puede emular servidores CVS, lo que habilita el uso de clientes CVS pre-existentes y módulos IDE para CVS pre-existentes en el acceso de repositorios Git.
  • Los repositorios Subversion y svk se pueden usar directamente con git-svn.
  • Gestión eficiente de proyectos grandes, dada la rapidez de gestión de diferencias entre archivos, entre otras mejoras de optimización de velocidad de ejecución.
  • Todas las versiones previas a un cambio determinado, implican la notificación de un cambio posterior en cualquiera de ellas a ese cambio (denominado autenticación criptográfica de historial). Esto existía en Monotone.
  • Resulta algo más caro trabajar con ficheros concretos frente a proyectos, eso diferencia el trabajo frente a CVS, que trabaja con base en cambios de fichero, pero mejora el trabajo con afectaciones de código que concurren en operaciones similares en varios archivos.
  • Los renombrados se trabajan basándose en similitudes entre ficheros, aparte de nombres de ficheros, pero no se hacen marcas explícitas de cambios de nombre con base en supuestos nombres únicos de nodos de sistema de ficheros, lo que evita posibles, y posiblemente desastrosas, coincidencias de ficheros diferentes en un único nombre.
  • Realmacenamiento periódico en paquetes (ficheros). Esto es relativamente eficiente para escritura de cambios y relativamente ineficiente para lectura si el reempaquetado (con base en diferencias) no ocurre cada cierto tiempo.

Acerca del Control de Versiones

¿Qué es un control de versiones, y por qué debería importarte? Un control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante. Aunque en los ejemplos de este libro usarás archivos de código fuente como aquellos cuya versión está siendo controlada, en realidad puedes hacer lo mismo con casi cualquier tipo de archivo que encuentres en una computadora.
Si eres diseñador gráfico o de web y quieres mantener cada versión de una imagen o diseño (es algo que sin duda vas a querer), usar un sistema de control de versiones (VCS por sus siglas en inglés) es una muy decisión muy acertada. Dicho sistema te permite regresar a versiones anteriores de tus archivos, regresar a una versión anterior del proyecto completo, comparar cambios a lo largo del tiempo, ver quién modificó por última vez algo que pueda estar causando problemas, ver quién introdujo un problema y cuándo, y mucho más. Usar un VCS también significa generalmente que si arruinas o pierdes archivos, será posible recuperarlos fácilmente. Adicionalmente, obtendrás todos estos beneficios a un costo muy bajo.

Sistemas de Control de Versiones Locales

Un método de control de versiones usado por muchas personas es copiar los archivos a otro directorio (quizás indicando la fecha y hora en que lo hicieron, si son ingeniosos). Este método es muy común porque es muy sencillo, pero también es tremendamente propenso a errores. Es fácil olvidar en qué directorio te encuentras, y guardar accidentalmente en el archivo equivocado o sobrescribir archivos que no querías.
Para afrontar este problema los programadores desarrollaron hace tiempo VCS locales que contenían una simple base de datos en la que se llevaba el registro de todos los cambios realizados a los archivos.

Local version control diagram
Figure 1. control de versiones local.

Una de las herramientas de control de versiones más popular fue un sistema llamado RCS, que todavía podemos encontrar en muchas de las computadoras actuales. Incluso el famoso sistema operativo Mac OS X incluye el comando rcs cuando instalas las herramientas de desarrollo. Esta herramienta funciona guardando conjuntos de parches (es decir, las diferencias entre archivos) en un formato especial en disco, y es capaz de recrear cómo era un archivo en cualquier momento a partir de dichos parches.

Sistemas de Control de Versiones Centralizados

El siguiente gran problema con el que se encuentran las personas es que necesitan colaborar con desarrolladores en otros sistemas. Los sistemas de Control de Versiones Centralizados (CVCS por sus siglas en inglés) fueron desarrollados para solucionar este problema. Estos sistemas, como CVS, Subversion, y Perforce, tienen un único servidor que contiene todos los archivos versionados, y varios clientes que descargan los archivos desde ese lugar central. Este ha sido el estándar para el control de versiones por muchos años.

Centralized version control diagram
Figure 2. Control de versiones centralizado.

Esta configuración ofrece muchas ventajas, especialmente frente a VCS locales. Por ejemplo, todas las personas saben hasta cierto punto en qué están trabajando los otros colaboradores del proyecto. Los administradores tienen control detallado sobre qué puede hacer cada usuario, y es mucho más fácil administrar un CVCS que tener que lidiar con bases de datos locales en cada cliente.
Sin embargo, esta configuración también tiene serias desventajas. La más obvia es el punto único de fallo que representa el servidor centralizado. Si ese servidor se cae durante una hora, entonces durante esa hora nadie podrá colaborar o guardar cambios en archivos en los que hayan estado trabajando. Si el disco duro en el que se encuentra la base de datos central se corrompe, y no se han realizado copias de  seguridad adecuadamente, se perderá toda la información del proyecto, con excepción de las copias instantáneas que las personas tengan en sus máquinas locales. Los VCS locales sufren de este mismo problema: Cuando tienes toda la historia del proyecto en un mismo lugar, te arriesgas a perderlo todo.

Sistemas de Control de Versiones Distribuidos

Los sistemas de Control de Versiones Distribuidos (DVCS por sus siglas en inglés) ofrecen soluciones para los problemas que han sido mencionados. En un DVCS (como Git, Mercurial, Bazaar o Darcs), los clientes no solo descargan la última copia instantánea de los archivos, sino que se replica completamente el repositorio. De esta manera, si un servidor deja de funcionar y estos sistemas estaban colaborando a través de él, cualquiera de los repositorios disponibles en los clientes puede ser copiado al servidor con el fin de restaurarlo. Cada clon es realmente una copia completa de todos los datos.

Distributed version control diagram
Figure 3. Control de versiones distribuido.

Además, muchos de estos sistemas se encargan de manejar numerosos repositorios remotos con los cuales pueden trabajar, de tal forma que puedes colaborar simultáneamente con diferentes grupos de personas en distintas maneras dentro del mismo proyecto. Esto permite establecer varios flujos de trabajo que no son posibles en sistemas centralizados, como pueden ser los modelos jerárquicos.