curlftpfs

Instalamos curlftpfs. Creamos el directorio en el que montaremos el FTP/FTPS. Montamos la carpeta remota FTP en el sistema local. Si queremos que se monte de forma persistente en el sistema, agregamos un nueva entrada al fichero /etc/fstab

Scripts copia MySQL

!/bin/bash
rm -rf /root/bbdd/*
echo "Empezando copia …"
TIMESTAMP=$(date +"%F")
echo $TIMESTAMP
BACKUP_DIR="/root/bbdd/$TIMESTAMP"
mkdir -p $BACKUP_DIR
MYSQL_USER="root"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="laquesea"
MYSQLDUMP=/usr/bin/mysqldump
MYSQL_COMMAND=$MYSQL" --user="$MYSQL_USER" --password="$MYSQL_PASSWORD
databases=$(echo "SHOW DATABASES" | $MYSQL_COMMAND | egrep -v '(performance_schema|information_schema|mysql)')
echo $databases
for db in $databases; do
echo "Copiando … "$db
$MYSQLDUMP --force --opt --user=$MYSQL_USER --password=$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
done
rsync -avz -e ssh "$BACKUP_DIR/" copias@ipquesea:/home/copias/servidor/bbdd

echo "Empezando copia web..."
webs=$(for x in /home/*/public_html;do [ ] || echo $x;done)
echo $webs
for web in $webs; do
  web1=${web:5:-11}
  echo "Copiando a ... home/copias/servidor/html$web1"
  rsync -avz -e ssh "$web/" copias@ipquesea:"/home/copiasservidor/html$web1"
done

Instalar PHP 7 en IIS

Una vez instalado IIS (Internet Information Server de Microsoft) lo primero que nos damos cuenta es que el PHP lenguaje de script, más utilizado en Internet no funciona.

Ok, tenemos pues que añadirlo nosotros al IIS, tenemos dos posibilidades o bien utilizarlo en modo CGI o bien itegrado:

Non Thread Safe: Apache + FastCGI / IIS + FastCGI . Si elegimos correr PHP como CGI binary, no necesitamos el Hilo Seguro (thread safety), porque el ejecutable es llamado para cada consulta. Es el sistema más seguro y rápido para ejecutar apliaciones PHP, aunque consume más recursos.

Thread Safe: Apache + LoadModule / IIS . Hilo seguro (Thread Safety) indica que el ejecutable puede trabajar en modo multithreaded webserver, esto ocurre con Apache 2 sobre Windows. Para multithreaded webservers, como son las antiguas versiones de IIS también se puede usar la versión threaded de PHP. Es decir se crea una copia de almacenamiento para cada hilo (thread) de forma que los datos no colisionan nunca. Si queremos que PHP trabaje de esta forma es decir CGI binario.

Thread Safety significa que el binario puede funcionar en un servidor multi-hilo como por ejemplo bajo Apache 2 para windows. Thread Safety funciona creando una copia local de almacenamiento para cada hilo, de manera que los datos no colisionarán con otros hilos.

Entonces ¿que necesito? Si se elige ejecutar PHP como binario CGI, entonces no se necesita thread safety, por que el binario es invocado en cada petición. Para servidores multi-hilo, como IIS5 y IIS6 se debe utilizar la versión threaded de PHP.

Proteger un directorio web con contraseña

Se pueden proteger directorios y subdirectorios de nuestro hosting a través de los archivos .htaccess y .htpasswd.

Para crear los archivos .htaccess y .htpasswd se utiliza un editor de texto plano, notepad, vi, nano… Es probable que dispongas de un archivo .htaccess en el servidor si ya tienes instalado algún CMS como WordPress. En caso de no disponer de ningún archivo .htaccess en el servidor simplemente tendremos que crear un nuevo archivo de texto y renombrarlo a .htaccess.

El archivo .htpasswd contiene los nombres de usuario y contraseña, por lo que mejor guardarlo en la raíz del alojamiento (fuera de la carpeta “public”).

AuthName "Restricted Area"
AuthType Basic
AuthUserFile /var/www/dominio_que_sea.com/.htpasswd
AuthGroupFile /dev/null
require valid-user

Para crear el archivo .htpasswd utilizaremos la siguiente herramienta: http://www.htaccesstools.com/htpasswd-generator/

Limpiar boot de kernels antiguos en Ubuntu

Nos conectamos como superusuarios:

sudo su

Luego ejecutamos el siguiente comando que nos limpiará la carpeta /boot de kernel que ya no se utilizan.

 
dpkg --get-selections|grep 'linux-image*'|awk '{print $1}'|egrep -v "linux-image-$(uname -r)|linux-image-generic" |while read n;do apt-get -y remove $n;done
sudo apt autoremove

Por último para dejarlo como un a patena:

apt-get autoclean

 

rsync con certificado

Seguramente la herramienta más utilizada que hay hoy en día para hacer copias de seguridad sea “rsync“, si resulta que las copias son entre servidores remotos, pues su compeñero ideal será “ssh“.

Las opciones de “rsync” que necesitaría si quiero que se copien todos los archivos y una vez copiados se vaya actualizando con los nuevos archivos o los modificados:

  • -r: Aplica recursividad al origen de la copia. Se lleva los archivos y directorios que están dentro de la ruta que marquemos como origen.
  • -u: Modo de actualización, tan sólo se lleva los archivos que sean más nuevos en el origen que en el destino.
  • -o -g: Transfiere la propiedad de usuario (-o) y grupo (-g). Esto se aplica a los números de UID, no al nombre de usuario concreto. Si en nuestro origen el usuario con UID 3333 es usuario1 y en el destino el UID 3333 corresponde a usuario 2, habrá un problema de permisos ya que usuario 2 de repente pasará a tener control sobre esos datos.
  • -X: Transferir atributos extendidos que tengan aplicados los archivos
  • -p: Transfiere los permisos del archivo (diferente a la propiedad del mismo)
  • -t:Conserva las fechas de modificación, haciendo que rsync marque en el destino la misma fecha de modificación que tenía el archivo en origen.
  • -l: Conserva los enlaces simbólicos copiándolos como tales y apuntando al mismo destino, exista o no.
  • -D: Copia dispositivos especiales
  • -S: Manejar archivos dispersos de forma eficiente, de tal manera que si tenemos un archivo que tiene marcados 4GB como tamaño pero solo usa 100MB, lo transfiera con mayor efectividad.
  • -x: No cruzar filesystems. Es útil cuando tenemos un punto de montaje dentro de nuestro origen y no queremos llevarnos su contenido.
  • –remove-source-files: Elimina los archivos del ORIGEN una vez copiados. Interesante a la hora de archivados.
  • –delete: Borrará los archivos que haya en DESTINO y que no estén en origen. Útil para mantener una copia exacta 1:1 del origen
  • -z: Aplica compresión a los datos durante la transferencia. Muy útil si se transfieren logs.
  • –progress: Mostrará información del archivo que se está transfiriendo, así como del tiempo que se espera que tardará la transferencia en terminar. Si no hay cambios en los archivos, –progress no mostrará nada.
  • -e: Permite especificar opciones al comando que usaremos de shell remota. Por ejemplo, si tenemos el servidor ssh remoto en el puerto 1234, ejecutaremos: rsync -e “ssh -p 1234” -otrasopciones origen destino
  • -a: Esta es una metaopción, que activa de golpe las opciones -rlptgoD.
  • -W: Esta opción activa la copia completa de los archivos, para que no haya que dedicar tiempo a calcular los diferenciales.
  • -c: Esta opción desactiva la comprobación de checksum de datos, es decir, solo utiliza fecha de modificación y tamaño para determinar si un archivo se transfiere o no.
  • -avz

luego si queremos usar “ssh” lo haremos con la opción:

  • e: “-e ssh

si lo que queremos es una copia exacta usaremos:

  • –delete-after: que eliminaría en e lservidor 2, los archivos eliminados antes de hacer la copia del servidor 1.

La idea ahora sería poner en el servidor 2 un cron que copie los archivos del servidor 1.

$ rsync -e shh -avz usuario1@ip-servidor1:/directorio/servidor1 /directorio/servidor2

Este comando evidentemente nos pedirá la contraseña por lo que para poner en un cron, no nos sirve, para solucionar esto tenemos dos posibilidades:

  • utilizar la aplicación sshpass dentro de rsync.
    • sshpass -p 'elpassword' rsync --progress -avz -e ssh usuario1@ipservidor1:/servidor1/directorio/* /servidor2/directorio
  • o utilizar llaves públicas y llaves privadas.

En el servidor 2 vamos a crear las claves:

$ ssh-keygen -tdsa

A todas las preguntas las dejamos en blanco, esto genera id_dsa.pub en el directorio oculto /home/admin/.ssh/ la clave pública que copiaremos en el servidor1

Para ello simplemente:

 ssh-copy-id root@<ip-del-que-se-quiere-conectar>

 


Comentarios 0