Резервное копирование каталога сценария оболочки и проверка файла на наличие

Опция -sпросто покажет общее количество. Изman du:

-s, --summarize
       display only a total for each argument

Без -sduтакже будет перечислять каждый подкаталог -отдельно. В сочетании с этим вы можете просто использовать оба каталога в качестве аргументов.

du -shc directory_1 directory_2
0
09.04.2020, 04:22
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. вариант.

0
28.04.2021, 23:18

Теги

Похожие вопросы