Создание архива с текущей датой в качестве имени папки и добавление 1, 2 и т. Д., Если папка существует

Я пытаюсь настроить этот скрипт резервного копирования так, чтобы он принимал дату текущего дня и делал каталог в формате mmddyyyy, так как это будет автоматизировано. Однако, если каталог с этим текущим днем ​​уже существует (если мне нужно было сделать более одной резервной копии в данный день), я хочу добавить -1 или -2, чтобы он отображался 07072011-3 (если бы это было 4-й бэкап делается в тот день).

Есть ли простой способ добавить в конец имени каталога, +1 за каждый раз, когда он был написан?

Установить дату / имя папки

today="$ (date +%m%d%Y)"

mkdir /home/user/backup/$today

Проверьте, существует ли каталог

if [ ! -d /home/user/backup/$today ]

then

echo Directory already exists ;

2 ответа

Решение

Вы должны использовать DDMMYYYY? Использование ГГГГММДД проще в качестве порядка сортировки по умолчанию для ls Затем правильно отсортировать новейшие к вершине.

Вы также можете расширить идею даты, чтобы использовать время, например

today=$( date +%Y%m%d%H) 

чтобы получить ГГГГММДДЧЧ, и вы даже можете добавить%M и%S, если вам нужно.

Если вы действительно хотите придерживаться выбранного формата, вы можете сделать что-то вроде следующего:

today=$(date +%Y%m%d)
folder=$today
i=0
while [ -e /home/user/$folder ]
do
  echo "${folder} exists";
  i=$(( $i + 1 ))
  folder="${today}-${i}"
done
echo $folder;
Другие вопросы по тегам