Este script automatiza la copia de seguridad de directorios especificados y sube los archivos de copia de seguridad a un bucket de AWS S3. El script utiliza un único archivo de configuración (config.json
) para todos los detalles de configuración necesarios, lo que lo hace más fácil y práctico para el usuario.
- Python 3.x instalado en tu sistema.
- AWS CLI instalado y configurado con tus credenciales de AWS.
- Paquetes de Python Requeridos: Instala los paquetes requeridos usando pip:
pip install boto3 jsonschema
Crea un archivo config.json
en el mismo directorio que tu script con la siguiente estructura:
{
"directories": [
"/path/to/directory1",
"/path/to/directory2"
],
"aws": {
"access_key_id": "your-access-key-id",
"secret_access_key": "your-secret-access-key",
"bucket_name": "your-s3-bucket-name"
},
"backup_output_dir": "/path/to/backup/output/dir"
}
- directories: Una lista de rutas de directorios que deseas respaldar. Reemplaza
"/path/to/directory1"
y"/path/to/directory2"
con las rutas reales de los directorios que deseas respaldar. - aws:
access_key_id
: Tu ID de Clave de Acceso de AWS para la autenticación. Reemplaza"your-access-key-id"
con tu ID de Clave de Acceso de AWS real.secret_access_key
: Tu Clave de Acceso Secreta de AWS. Reemplaza"your-secret-access-key"
con tu Clave de Acceso Secreta de AWS real.bucket_name
: El nombre del bucket de S3 donde se subirán los archivos de copia de seguridad. Reemplaza"your-s3-bucket-name"
con el nombre real de tu bucket de S3.
- backup_output_dir: El directorio donde se almacenarán temporalmente los archivos de copia de seguridad antes de subirlos a S3. Reemplaza
"/path/to/backup/output/dir"
con la ruta real del directorio donde deseas almacenar los archivos de copia de seguridad.
Aquí tienes un ejemplo de cómo podría verse el archivo config.json
con marcadores de posición:
{
"directories": [
"/home/user/documents",
"/home/user/photos"
],
"aws": {
"access_key_id": "AKIAIOSFODNN7EXAMPLE",
"secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"bucket_name": "secure-backup-bucket"
},
"backup_output_dir": "/home/user/backups"
}
Asegúrate de reemplazar los marcadores de posición con tus valores reales antes de ejecutar el script.
-
Crear
config.json
: Crea un archivoconfig.json
en el mismo directorio que tu script con los detalles de configuración apropiados. -
Ejecutar el Script: Ejecuta el script para respaldar tus archivos en tu bucket de S3:
python backup_script.py
El script realiza los siguientes pasos:
- Registro: Configura el registro en un archivo llamado
backup.log
. - Carga de Configuración: Carga la configuración desde
config.json
. - Creación de Copia de Seguridad: Crea una copia de seguridad de los directorios especificados y la guarda en
backup_output_dir
. - Subida a S3: Sube el archivo de copia de seguridad al bucket de S3 especificado.
- setup_logging(): Configura el registro.
- create_backup(backup_dirs, output_dir): Crea una copia de seguridad de los directorios especificados.
- upload_to_s3(file_path, aws_config): Sube el archivo de copia de seguridad a AWS S3.
- validate_config(config): Valida la configuración usando el esquema JSON.
- load_config(): Carga la configuración desde
config.json
. - main(): Función principal que orquesta el proceso de copia de seguridad.
-
Revisar el Archivo de Registro:
- El script registra las actividades en un archivo llamado
backup.log
. Puedes revisar este archivo de registro para ver el estado del proceso de copia de seguridad. - Abre una terminal y ejecuta:
cat backup.log
- El script registra las actividades en un archivo llamado
-
Verificar Archivos de Copia de Seguridad:
- Después de que el script se ejecute, revisa el
backup_output_dir
(por ejemplo,/home/user/backups
) para asegurarte de que se han creado los archivos de copia de seguridad. - Deberías ver archivos
.zip
nombrados con la fecha y hora actuales.
- Después de que el script se ejecute, revisa el
-
Revisar el Bucket de S3:
- Verifica que los archivos de copia de seguridad se han subido a tu bucket de S3.
- Puedes hacerlo a través de la Consola de Administración de AWS o usando la CLI de AWS:
aws s3 ls s3://your-s3-bucket-name/
- Archivo de Configuración: Usa
config.json
para todos los datos de configuración, incluyendo los directorios a respaldar, las credenciales de AWS y el directorio de salida de la copia de seguridad. - Cargar Configuración: Carga la configuración desde
config.json
en la funciónload_config
. - Ejecutar el Script: Ejecuta el script para respaldar tus archivos en tu bucket de S3.
- Verificación: Revisa el archivo de registro, verifica los archivos de copia de seguridad y revisa el bucket de S3 para asegurarte de que el proceso de copia de seguridad esté funcionando correctamente.
Siguiendo estos pasos, puedes crear un sistema de copia de seguridad automatizado seguro y flexible que se adapte a tus necesidades.
Las contribuciones son bienvenidas.
This script automates the backup of specified directories and uploads the backup files to an AWS S3 bucket. The script uses a single configuration file (config.json
) for all necessary configuration details, making it easier and more practical for the user.
- Python 3.x installed on your system.
- AWS CLI installed and configured with your AWS credentials.
- Required Python Packages: Install the required packages using pip:
pip install boto3 jsonschema
Create a config.json
file in the same directory as your script with the following structure:
{
"directories": [
"/path/to/directory1",
"/path/to/directory2"
],
"aws": {
"access_key_id": "your-access-key-id",
"secret_access_key": "your-secret-access-key",
"bucket_name": "your-s3-bucket-name"
},
"backup_output_dir": "/path/to/backup/output/dir"
}
- directories: A list of directory paths that you want to back up. Replace
"/path/to/directory1"
and"/path/to/directory2"
with the actual paths to the directories you want to back up. - aws:
access_key_id
: Your AWS Access Key ID for authentication. Replace"your-access-key-id"
with your actual AWS Access Key ID.secret_access_key
: Your AWS Secret Access Key. Replace"your-secret-access-key"
with your actual AWS Secret Access Key.bucket_name
: The name of the S3 bucket where the backup files will be uploaded. Replace"your-s3-bucket-name"
with your actual S3 bucket name.
- backup_output_dir: The directory where the backup files will be temporarily stored before uploading to S3. Replace
"/path/to/backup/output/dir"
with the actual path to the directory where you want to store the backup files.
Here’s an example of how the config.json
file might look with placeholders:
{
"directories": [
"/home/user/documents",
"/home/user/photos"
],
"aws": {
"access_key_id": "AKIAIOSFODNN7EXAMPLE",
"secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"bucket_name": "secure-backup-bucket"
},
"backup_output_dir": "/home/user/backups"
}
Make sure to replace the placeholders with your actual values before running the script.
-
Create
config.json
: Create aconfig.json
file in the same directory as your script with the appropriate configuration details. -
Run the Script: Execute the script to back up your files to your S3 bucket:
python backup_script.py
The script performs the following steps:
- Logging: Sets up logging to a file named
backup.log
. - Configuration Loading: Loads configuration from
config.json
. - Backup Creation: Creates a backup of specified directories and saves it to the
backup_output_dir
. - S3 Upload: Uploads the backup file to the specified S3 bucket.
- setup_logging(): Sets up logging.
- create_backup(backup_dirs, output_dir): Creates a backup of specified directories.
- upload_to_s3(file_path, aws_config): Uploads the backup file to AWS S3.
- validate_config(config): Validates the configuration using JSON schema.
- load_config(): Loads configuration from
config.json
. - main(): Main function that orchestrates the backup process.
-
Check the Log File:
- The script logs activities to a file named
backup.log
. You can check this log file to see the status of the backup process. - Open a terminal and run:
cat backup.log
- The script logs activities to a file named
-
Verify Backup Files:
- After the script runs, check the
backup_output_dir
(e.g.,/home/user/backups
) to ensure that the backup files have been created. - You should see
.zip
files named with the current date and time.
- After the script runs, check the
-
Check S3 Bucket:
- Verify that the backup files have been uploaded to your S3 bucket.
- You can do this via the AWS Management Console or using the AWS CLI:
aws s3 ls s3://your-s3-bucket-name/
- Configuration File: Use
config.json
for all configuration data, including directories to back up, AWS credentials, and the backup output directory. - Load Configuration: Load configuration from
config.json
in theload_config
function. - Run the Script: Execute the script to back up your files to your S3 bucket.
- Verification: Check the log file, verify backup files, and check the S3 bucket to ensure the backup process is working correctly.
By following these steps, you can create a secure and flexible automated backup system that meets your needs.