Перед копированием полученного файла резервной копии в каталог скрипт должен сначала проверить, не существует ли файла с таким же именем (это мой первый опыт написания скрипта).
#!/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
решение1
Команда, tar
которую вы используете, выполнит фактическую работу по резервному копированию вашего /home/abc
каталога $filename
в /home/def
каталог. Если вы хотите проверить наличие этого имени файла в этом каталоге перед "копированием полученного файла резервной копии в каталог", то вам, вероятно, следует проверить наличие файла перед запуском команды tar. Например:
#!/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
Однако я мог бы предложить несколько «улучшений»:
#!/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
- Я изменил формат даты, чтобы использовать 4-значный год, затем месяц, затем день (мой выбор).
- Я также изменил имя переменной, как указал @Nasir.
- может быть полезно, чтобы имя файла резервной копии показывало, какую область он копирует, если у вас есть более одной области, резервные копии которой вы можете сделать в один и тот же день, поэтому моя
filename
переменная используетBackup_file
переменную, но заменяет все вхождения '/' на '_' (согласно разделу Расширение параметровman bash
и как указано вэтот ответ для замены всех экземпляров символа) - наконец, я использовал
Backup_file
переменную в команде tar, так что если вы измените переменную, ее нужно будет изменить только в одном месте (определенно рекомендуется)
Если вы действительно хотите запустить команду tar, а затем проверить наличие файла, вам, вероятно, следует tar во временное местоположение, чтобы вы могли переместить его позже. Однако, если вы не собираетесь ничего делать с файлом tar, если файл с таким же именем уже существует, то вы могли бы потратить много времени, прежде чем выяснить это, поэтому я думаю, что проверка перед запуском команды tar — лучший вариант.