S4: herramienta de línea de comandos para sincronizar archivos locales con Amazon S3
S4, abreviatura de Simple Storage Solution Syncer, es una herramienta gratuita y de código abierto para sincronizar sus archivos con el servicio Amazon S3 que funciona desde la línea de comandos de Linux. Funciona en conjunto con S3 y funciona como soluciones propietarias como One Drive o DropBox. Proporciona velocidades de carga y descarga muy rápidas a costos asequibles. Además, S4 le brinda la capacidad de versionar sus cargas para que pueda volver fácilmente a una versión anterior si es necesario.
S4 La herramienta puede realizar un seguimiento de los cambios de archivo utilizando un archivo .index ubicado en cada archivo de la carpeta raíz que se está sincronizando. La carpeta viene con claves de cada archivo que se está sincronizando, incluidas las marcas de tiempo ubicadas tanto local como remotamente. Los archivos están en formato JSON. Las claves se pueden ver usando el subcomando ls. s3cmd es otra herramienta que tiene el mismo propósito que cubrimos anteriormente en nuestro artículo.
Instalación en Centos 7
Instale el repositorio de EPEL. EPEL es la abreviatura de Extra Repositories for Enterprise Linux.
# yum -y install epel release
Actualizar el repositorio
# yum repolist
Instalar Python 3
# yum install yum-utils # yum-builddep python # curl -O https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
Descomprime el archivo
# tar xvf Python-3.5.0.tgz
Navega a la carpeta Python-3.5.0
# cd Python-3.5.0
Compila e instala python3
# ./configure # make # make install
Instalar pip3
# yum install python34-setuptools # easy_install-3.4 pip
Instalar en pc
# pip install s4
Instalación en Ubuntu 17.01 y Debian 9
Instalar Python 3
apt-get install python3
Instale herramientas de desarrollo y algunos paquetes más para un entorno estable y robusto
apt-get install build-essential libssl-dev libffi-dev python-dev
Instalar pip3
# apt-get install python3-pip
Comprobando la versión de pip
# pip3 –version pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)
Instalar s4
# pip install s4
Configuración de S3 Bucket
Inicie sesión en su cuenta de AWS y diríjase a la sección ‘s3’ en ‘almacenamiento’ y cree un depósito. En este ejemplo, creé un depósito llamado magnum2030
Otorgue acceso ‘Público’ al depósito y otórguele permisos de lectura y escritura. También habilite ‘Lista’ y ‘Escribir objetos’.
En el depósito creado, proceda y cree una carpeta que usaremos para sincronizar archivos desde la Terminal. En este caso, la carpeta se llama Proyecto 1.
Cómo ejecutar comandos de S4
Cree un directorio local y agregue algunos archivos
# mkdir project1 # cd project1 # touch file1.txt file2.txt
Correr
s4 add
Escriba la ruta del directorio local y proporcione sus credenciales de AWS
local folder: /home/Jamie/project1 s3 uri: s3://magnum2030/project1 AWS Access Key ID: AKIAJD53D9GCGKCD AWS Secret Access Key: region name: us-east-2 Provide a name for this entry [project1]:jamie
Sincronizar archivos
# s4 sync project1 # Syncing Project1 [/home/jamie/project1/ s3://magnum2030/project1/]
Dirígete a tu carpeta remota Proyecto 1 en el magnum2030 bucket y confirme la existencia de los dos archivos.
Agreguemos algunas líneas de texto a nuestros archivos.
echo "Seasons greetings!" >> file1.txt
echo "Happy holiday folks!" >> file2.txt
Ejecute el comando sync para sincronizar los cambios en nuestros archivos remotos en AWS
s4 sync project1
Producción
Creating . (s3://magnum2030/project1/ => /home/jamie/project1/) An error occurred while trying to update .: 'NoneType' object has no attribute 'total_size' Updating file1.txt (/home/jamie/project1/ => s3://magnum2030/project1/) Updating file2.txt (/home/jamie/project1/ => s3://magnum2030/project1/)
Dirígete a nuestros archivos en Proyecto 1 carpeta y confirme los cambios efectuados.
Sincronizar archivos continuamente
Para realizar una sincronización perpetua de archivos, use el comando ‘daemon’
s4 daemon project1
Cómo imprimir objetivos existentes
# s4 targets
Producción
s3://magnum2030/project1/] ?region=us-east-1: [/home/jamie/project1 <=> https://s3.console.aws.amazon.com/s3/buckets/magnum2030/project1/?region=us-east-1] Jamie: [/home/jamie/project1 <=> https://s3.console.aws.amazon.com/s3/buckets/magnum2030/project1/?region=us-east-2&tab=overview] Project1: [/home/jamie/Downloads <=> s3://mybucket/Downloads] james: [/home/jamie/project1 <=> s3://magnum2030/project1] jamie: [/home/jamie/project1 <=> s3://magnum2030/project1] jay: [/home/jamie/aws <=> s3://magnum2030/project1] project1: [/home/jamie/project1 <=> s3://magnum2030/project1] test1: [/home/jamie/project1 <=> s3://magnum2030/project1]>
Listado del contenido de su objetivo
# s4 ls project1
Eliminar un objetivo
s4 rm target-name
Nota
El nombre del objetivo es el que se especifica en la penúltima línea a continuación.
Ignorando archivos
Cree un archivo .syncignore en el directorio que se sincroniza: Proyecto 1. Este archivo enumera y determina los archivos o directorios que se ignorarán durante el proceso de sincronización. Cada entrada de línea representa un archivo o carpeta que la función de sincronización debe ignorar. Por ejemplo, la existencia de «TestExample» en el archivo .syncignore obligará a la sincronización a ignorar todos los archivos y carpetas llamados «TestExample».
Espero que haya disfrutado de este artículo y agregue sus comentarios.