---
title: "Script de Bash de copia de seguridad de todos los archivos .txt de un directorio"
description: "En sistemas operativos como Linux, la extensión .bak se utiliza habitualmente para denotar una copia de seguridad de un archivo. Cuando un programa está a punto de sobrescribir un archivo..."
url: https://indaga.net/script-de-bash-de-copia-de-seguridad-de-todos-los-archivos-txt-de-un-directorio/
date: 2024-08-14
modified: 2026-05-15
author: "Directorio Indaga"
image: https://indaga.net/wp-content/uploads/2024/08/backupTxt.webp
categories: ["GNU Linux", "Recursos y Utilidades"]
tags: ["bak", "bash scripting", "bucle for en linux", "codigos explicados", "codigos linux explicados", "copias seguridad", "gnu linux", "scripts bash"]
type: post
lang: es
---

# Script de Bash de copia de seguridad de todos los archivos .txt de un directorio

En sistemas operativos como Linux, la extensión** .bak** se utiliza habitualmente para denotar una** copia de seguridad de un archivo**. Cuando un programa está a punto de sobrescribir un archivo existente, puede crear una copia del archivo original y añadir .**bak** al nombre del archivo. Esto permite recuperar el contenido original en caso de que la escritura falle y corrompa el archivo, lo cual podría ocurrir debido a un fallo del sistema operativo, un corte de energía o la falta de espacio en disco.

Por ejemplo, si tienes un archivo llamado **documento.txt** y haces una copia de seguridad, el archivo de copia de seguridad se llamará **documento.txt.bak**. De esta manera, si algo sale mal durante la modificación del archivo original, puedes restaurar el archivo original desde la copia de seguridad.

Vamos a hacer un script que realice una copia de seguridad de todos los archivos .txt en el directorio especificado, añadiendo la extensión .bak a cada copia. Aquí va el **script de bash**:

#!/bin/bash

# Verifica si se ha proporcionado un directorio como argumento
if [ -z "$1" ]; then
echo "Por favor, proporciona un directorio."
exit 1
fi

# Itera sobre todos los archivos .txt en el directorio especificado
for filename in $1/*.txt
do
# Crea una copia de seguridad del archivo con la extensión .bak
cp "$filename" "$filename.bak"
done

echo "Copia de seguridad completada."
**Explicando el script:**

**#!/bin/bash**:  Especifica que el script debe ejecutarse con el intérprete de Bash.

**

if [ -z «$1» ]; then … fi**: Esta línea verifica si el primer argumento pasado al script (**$1**) está vacío. El  **-z** es una opción de prueba en Bash que significa «cadena vacía». En otras palabras, **-z «$1»** devuelve verdadero si **$1** es una cadena vacía.

**

echo «Por favor, proporciona un directorio.»**:  Si la condición anterior es verdadera (es decir, si no se proporcionó ningún argumento), esta línea imprime un mensaje en la terminal pidiendo al usuario que proporcione un directorio.

**

exit 1**: Esta línea termina la ejecución del script con un código de salida `1`, que generalmente indica un error. Esto es útil para detener el script si no se ha proporcionado el argumento necesario.

**

fi**: Esta línea marca el final del bloque **if**.

Así, esta parte del script se asegura de que el usuario proporcione un directorio como argumento al ejecutar el script. Si no se proporciona, el script muestra un mensaje de error y se detiene.

**for filename in $1/*.txt**: Este comando inicia un bucle for que itera sobre todos los archivos con extensión .txt en el directorio especificado por $1. $1 es un parámetro que se pasa al script cuando se ejecuta.

**

do**: Indica el inicio del bloque de comandos que se ejecutarán para cada archivo encontrado.

**

cp $filename $filename.bak**: Este comando copia el archivo actual ($filename) y crea una copia con la extensión .bak. Por ejemplo, si el archivo se llama *documento.txt*, la copia se llamará *documento.txt.bak*.

**

done:** Indica el final del bucle for.

**

echo «Copia de seguridad completada.»**: Muestra un mensaje indicando que la copia de seguridad se ha completado.

Guarda este código en un archivo, por ejemplo, **backupTxt.sh**, y luego puedes ejecutarlo desde la línea de comandos proporcionando el directorio como argumento. Recuerda darle permisos de ejecución al script:

`sudo chmod +x backupTxt.sh`

**

Para ejecutarlo:**

`

./backupTxt.sh ruta_del_directorio

`

Sustituye ruta_del_directorio por el directorio en el que están los archivos **.txt** y quieras realizar la copia de seguridad (extensión** txt.bak**).

[![script_bash](https://indaga.net/wp-content/uploads/2024/08/script_bash.webp)](https://indaga.net/wp-content/uploads/2024/08/script_bash.webp)
