Antes de copiar el archivo de copia de seguridad resultante al directorio, el script primero debe verificar que no haya un archivo con el mismo nombre (esta es la primera vez que escribo un script).
#!/bin/bash
time=$(date +%m-%d-%y)
Backup_file=/home/abc
Dest=/home/def
filename=back-$time.tar.gz
tar -czf $Dest/$filename /home/abc
read $file
if [ -f $file ]; then
echo "Error file $file already exist!"
else
mv $file /home/def
fi
Respuesta1
El tar
comando que está utilizando hará el trabajo real de hacer una copia de seguridad de su /home/abc
directorio $filename
en el /home/def
directorio. Si desea verificar la existencia de este nombre de archivo en ese directorio antes de "copiar el archivo de respaldo resultante al directorio", entonces probablemente debería probar la existencia del archivo antes de ejecutar ese comando tar. Como:
#!/bin/bash
time=$(date +%m-%d-%y)
Backup_file=/home/abc
Dest=/home/def
filename=back-$time.tar.gz
if [ -f $filename ]; then
echo "Error file $filename already exist!"
else
tar -czf $Dest/$filename /home/abc
fi
Sin embargo, podría sugerir algunas "mejoras":
#!/bin/bash
today=$(date +%Y-%m-%d)
Backup_file=/home/abc
Dest=/home/def
filename=back-${Backup_file//\//_}-${today}.tar.gz
if [ -f ${filename} ]; then
echo "Error file ${filename} already exists!"
else
tar -czf ${Dest}/${filename} ${Backup_file}
fi
- Cambié el formato de fecha para usar año de 4 dígitos, luego mes y luego día (mi preferencia)
- También cambié el nombre de la variable, como lo señaló @Nasir.
- Puede ser útil que el nombre del archivo de respaldo muestre de qué área se está respaldando si tiene más de un área de la que podría respaldar el mismo día, por lo que mi
filename
variable usa laBackup_file
variable, pero reemplaza todas las instancias de '/' con '_' (según la sección Expansión de parámetros deman bash
y como se menciona enesta respuesta para reemplazar todas las instancias de un personaje) - finalmente he usado la
Backup_file
variable en el comando tar, por lo que si cambia la variable, solo es necesario cambiarla en un lugar (definitivamente recomendado)
Si realmente desea ejecutar el comando tar y luego verificar la existencia del archivo, probablemente debería colocarlo en una ubicación temporal para poder moverlo más tarde. Sin embargo, si no va a hacer nada con el archivo tar si ya existe un archivo con el mismo nombre, es posible que haya perdido mucho tiempo antes de descubrirlo, por lo que creo que verificar antes de ejecutar el comando tar es una mejor opción. opción.