Как я могу удалить папки с метками времени, если они уже были созданы в тот день?
Папки создаются каждый раз, когда я перезагружаюсь.
У них есть формат ниже: (время всегда будет меняться)
.mozilla_2019_01_08_08:02
.mozilla_2019_01_09_20:16
.mozilla_2019_01_10_01:16
.mozilla_2019_01_10_18:12
Здесь я хочу иметь возможность удалить папку.mozilla_2019_01_10_18:12, если она создана как более ранняя, уже существует в..._ 2019_01_10. Лучше было бы остановить его создание, то есть, если оно уже было создано в тот день.
Я не могу использовать cron @daily или определенное время, так как никогда не знаю, как часто или когда компьютер будет (пере) загружен.
Как я могу сделать это в существующем скрипте, пожалуйста?
Вот мой сценарий:
##!/bin/bash
##
# COPY .mozilla FOLDER AND LEAVE LAST 10 COPIES (1 per day?)
#
sleep 30
#
if [ -e /home/david/nas-backups/mozilla/ ]
then
cp -a /home/david/.mozilla /home/david/nas-backups/mozilla/
mv /home/david/nas-backups/mozilla/.mozilla /home/david/nas-backups
/mozilla/backups/.mozilla_$(date +%Y_%m_%d_%H:%M)
# Show result of copy message
export DISPLAY=:0 && zenity --info --title "Backup Information Box"
--text=".mozilla Backup Finished
Backed up to:
/nas-backups/mozilla/backups/" --width=600 --height=200
## Working on how to keep only first copy per day ##
# Limit to last 10 alphabetical copies (courtesy of @Vijay)
cd ~/nas-backups/mozilla/backups
total=$(ls -1A|wc -l); remove=$((total - 10)); rm -rv $(ls -1vA|head
-n $remove)
# Show folder so I can manually delete extra daily copies
nautilus /home/david/nas-backups/mozilla/backups
else
export DISPLAY=:0 && zenity --info --title "Backup Information Box"
--text=".mozilla backup FAILED
- nas-backups either not mounted or not availeble" --width=450
--height=150
fi
1 ответ
Одна резервная копия в день: не создавайте больше резервных копий, если они существуют на сегодня
Добавьте условие, которое проверяет , не существует ли резервная папка на сегодня. Если на сегодня нет папки, то только cp
а также mv
будет выполнен.
Обратите внимание *
в конце проверки второй папки. Это позволяет использовать метку времени в конце имени папки, как вы уже сделали.
Вот фрагмент кода:
##!/bin/bash
if [ -d /home/david/nas-backups/mozilla/ ]
then
if [ ! -d /home/david/nas-backups/mozilla/backups/.mozilla_"$(date +%Y_%m_%d)"* ]
then
echo "No backups found for today: Making one"
cp -a /home/david/.mozilla ~/nas-backups/mozilla/
mv /home/david/nas-backups/mozilla/.mozilla ~/nas-backups/mozilla/backups/.mozilla_$(date +%Y_%m_%d_%H:%M)
else
echo "Backup folder for today exists. No backups will be made today"
fi
fi
Надеюсь это поможет