Antes de copiar o arquivo de backup resultante para o diretório, o script deve primeiro verificar se já não existe um arquivo com o mesmo nome (esta é a primeira vez que escrevo um 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
Responder1
O tar
comando que você está usando fará o trabalho real de fazer backup do seu /home/abc
diretório $filename
no /home/def
diretório. Se você quiser verificar a existência desse nome de arquivo nesse diretório antes de "copiar o arquivo de backup resultante para o diretório", provavelmente deverá testar a existência do arquivo antes de executar o 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
No entanto, posso sugerir algumas "melhorias":
#!/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
- Alterei o formato da data para usar ano de 4 dígitos, depois mês e depois dia (minha preferência)
- Também mudei o nome da variável, conforme apontado por @Nasir
- pode ser útil para o nome do arquivo de backup mostrar qual área está fazendo backup se você tiver mais de uma área da qual pode fazer backup no mesmo dia, então minha
filename
variável usa aBackup_file
variável, mas substitui todas as instâncias de '/' por '_' (conforme a seção Expansão de parâmetrosman bash
e conforme mencionado emesta resposta para substituir todas as instâncias de um personagem) - finalmente usei a
Backup_file
variável no comando tar, então se você alterar a variável, ela só precisará ser alterada em um lugar (definitivamente recomendado)
Se você realmente deseja executar o comando tar e verificar a existência do arquivo, provavelmente deverá usar o tar em um local temporário para poder movê-lo mais tarde. No entanto, se você não fizer nada com o arquivo tar se já existir um arquivo com o mesmo nome, então você pode ter perdido muito tempo antes de descobrir isso, então acho que verificar antes de executar o comando tar é melhor opção.