jueves, 20 de marzo de 2014

ejemplos de SCP

scp con ejemplos

Más que a modo de tutorial o algo así, esta entrada la escribo a modo de recordatorio para mí mismo :)

scp significa secure cp, es un comando Unix/Linux para realizar copias seguras de archivos entre sistemas/usuarios. Es seguro, porque utiliza el protocolo ssh, es decir, que la información se transmite de forma encriptada.

La sintaxis es la siguiente:

scp [[from_user@]from-host:]source-file [[to_user@]to-host:][destination-file]

En donde:
  • from_user es el usuario con el que transmitirá el(los) archivo(s).
  • from-host es el nombre o dirección IP de la máquina desde la cual se enviará el(los) archivo(s).
  • source-file es el(los) archivo(s) o directorio(s) que se quieren copiar. En caso de ser un directorio, se debe especificar la opción -r para copiar todo el contenido del mismo.
  • to_user es el usuario que recibirá el(los) archivo(s).
  • to-host es el nombre o dirección IP de la máquina a la cual se copiará el(los) archivo(s).
  • destination-file es el nombre que recibirá el archivo copiado en el destino.
Además se pueden especificar las siguientes opciones:
  • -p para preservar los tiempos de acceso y modificación, así como los permisos del archivo original.
  • -q para no mostrar la barra de progreso de la transferencia.
  • -r para copiar recursivamente el contenido del directorio origen.
  • -v para mostrar mensaje de depuración.

Ejemplo 1

scp imagen001.jpg 192.168.1.105:imagen001-copy.jpg

Copia el archivo imagen001.jpg del directorio actual, al directorio home del mismo usuario, en la máquina 192.168.1.105 bajo el nombre imagen001-copy.jpg

Ejemplo 2

scp 192.168.1.105:imagen001-copy.jpg ./imagen001-copy2.jpg

Copia el archivo imagen001-copy.jpg del directorio home en la máquina 192.168.1.105, del usuario logueado, al directorio actual, bajo el nombre imagen001-copy2.jpg

Ejemplo 3

scp archivo1.c marco1@192.168.122.130:/home/marco1/programas/

Copia el archivo archivo1.c del directorio actual, al directorio /home/marco1/programas/, utilizando el usuario marco1.

Ejemplo 4

scp -r marco1@192.168.122.130:/home/marco1/codigo/ marco2@192.168.122.131:/home/marco2/codigo/

Copia recursivamente el contenido del directorio /home/marco1/codigo del usuario marco1, en la máquina 192.168.

sábado, 15 de marzo de 2014

Viendo el historico de confirmaciones

cms@desarrollo:/var/www/git$ git log
commit bc35ba474ea65a0109a4fd2454c41663afa3d7f1
Author: Cesar Morones <cesar.morones1@gmail.com>
Date:   Sat Mar 15 22:52:51 2014 -0600

    Version 2

commit bd40eb2faad229970d8c7dfabd2328bacfc12b2c
Author: Cesar Morones <cesar.morones1@gmail.com>
Date:   Sat Mar 15 22:14:19 2014 -0600

    Version inicial


Por defecto, si no pasas ningún argumento, git log lista las confirmaciones hechas sobre ese repositorio en orden cronológico inverso. Es decir, las confirmaciones más recientes se muestran al principio. Como puedes ver, este comando lista cada confirmación con su suma de comprobación SHA-1, el nombre y dirección de correo del autor, la fecha y el mensaje de confirmación.



cms@desarrollo:/var/www/git$ git log --pretty=oneline

bc35ba474ea65a0109a4fd2454c41663afa3d7f1 Version 2
bd40eb2faad229970d8c7dfabd2328bacfc12b2c Version inicial

Usando un interfaz gráfico para visualizar el histórico

Si deseas utilizar una herramienta más gráfica para visualizar el histórico de confirmaciones, puede que quieras echarle un ojo a un programa Tcl/Tk llamado gitk que se distribuye junto con Git. Gitk es básicamente un git log visual, y acepta casi todas las opciones de filtrado que acepta git log. Si tecleas gitk en la línea de comandos dentro de tu proyecto, deberías ver algo como lo de la Figura 2-2.

Figura 2-2. El visualizador de histórico gitk.

Comprobando el status de tus archivos

cms@desarrollo:/var/www/git$ git status
# On branch master
nothing to commit (working directory clean)

El comando te dice en qué rama estás. Por ahora, esa rama siempre es "master", que es la predeterminada.

si agregamos un archivo

cms@desarrollo:/var/www/git$ touch index.html
cms@desarrollo:/var/www/git$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    index.html
nothing added to commit but untracked files present (use "git add" to track)

 Para empezar el seguimiento de un nuevo archivo se usa el comando git add.

cms@desarrollo:/var/www/git$ git add index.html
cms@desarrollo:/var/www/git$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    new file:   index.html
#

Puedes ver que está preparado porque aparece bajo la cabecera “Cambios a confirmar” (“Changes to be committed”). 

Al modificar el archivo index.html pero aun no esta preparado

cms@desarrollo:/var/www/git$ nano index.html
cms@desarrollo:/var/www/git$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    new file:   index.html
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   index.html

Archivo preparado

cms@desarrollo:/var/www/git$ git add index.html
cms@desarrollo:/var/www/git$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    new file:   index.html
#
cms@desarrollo:/var/www/git$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    modified:   README
#    new file:   index.html
#
Se modifico y se se preparo.




Ignorando archivos


$ cat .gitignore
*.[oa]
*~
 
 



Obteniedo un repositorio en Git

Inicializando un repositorio en un directorio existente

Si estás empezando el seguimiento en Git de un proyecto existente, necesitas ir al directorio del proyecto y escribir:

cms@desarrollo:/var/www/git$ git init
Initialized empty Git repository in /var/www/git/.git/
cms@desarrollo:/var/www/git$ ls -l
total 0
cms@desarrollo:/var/www/git$ ls -la
total 12
drwxrwxr-x  3 cms  cms  4096 mar 15 22:10 .
drwxrwxrwx 16 root root 4096 mar 15 22:10 ..
drwxrwxr-x  7 cms  cms  4096 mar 15 22:10 .git

Esto crea un nuevo subdirectorio llamado .git que contiene todos los 
archivos necesarios del repositorio — un esqueleto de un repositorio 
Git. Todavía no hay nada en tu proyecto que esté bajo seguimiento.
 
cms@desarrollo:/var/www/git$ touch README
cms@desarrollo:/var/www/git$ ls -la
total 12
drwxrwxr-x  3 cms  cms  4096 mar 15 22:13 .
drwxrwxrwx 16 root root 4096 mar 15 22:10 ..
drwxrwxr-x  7 cms  cms  4096 mar 15 22:10 .git
-rw-rw-r--  1 cms  cms     0 mar 15 22:13 README
cms@desarrollo:/var/www/git$ git add README
cms@desarrollo:/var/www/git$ git commit -m 'Version inicial'
[master (root-commit) bd40eb2] Version inicial
 0 files changed
 create mode 100644 README
 
Los archivos bajo seguimiento son aquellos que existían en la última 
instantánea; pueden estar sin modificaciones, modificados, o preparados.
 Los archivos sin seguimiento son todos los demás —cualquier archivo de 
tu directorio que no estuviese en tu última instantánea ni está en tu 
área de preparación—. La primera vez que clonas un repositorio, todos 
tus archivos estarán bajo seguimiento y sin modificaciones, ya que los 
acabas de copiar y no has modificado nada. 
 
A medida que editas archivos, Git los ve como modificados, porque los has cambiado desde tu última confirmación. Preparas estos archivos modificados y luego confirmas todos los cambios que hayas preparado, y el ciclo se repite. Este proceso queda ilustrado en la Figura 2-1.

Figura 2-1. El ciclo de vida del estado de tus archivos.
 
 
 
 
 

Instalar y Configurar GIT

Para instalar Git, necesitas tener las siguientes librerías de las que Git depende: curl, zlib, openssl, expat, y libiconv. Por ejemplo, si estás en un sistema que tiene yum (como Fedora) o apt-get (como un sistema basado en Debian), puedes usar estos comandos para instalar todas las dependencias:


$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev


Instalar
$ apt-get install git


Configurar GIT

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
$ git config --global core.editor emacs
$ git config --global merge.tool vimdiff
 
Ver configuracion 
 
cms@desarrollo:~$ git config --list
user.name=Cesar Morones
user.email=cesar.morones1@gmail.com
core.editor=sublime2
merge.tool=vimdiff
   


Estados de GIT

Git tiene tres estados principales en los que se pueden encontrar tus archivos: confirmado (committed), modificado (modified), y preparado (staged). Confirmado significa que los datos están almacenados de manera segura en tu base de datos local. Modificado significa que has modificado el archivo pero todavía no lo has confirmado a tu base de datos. Preparado significa que has marcado un archivo modificado en su versión actual para que vaya en tu próxima confirmación.