Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Backup скрипт  (Прочитано 2801 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SU1C1D3

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Backup скрипт
« : 03 Августа 2014, 13:34:11 »
Доброго времени суток всем.
Возникла следующая проблема. Озадачился ежедневным бэкапом данных системы с помощью следующего скрипта:
#!/bin/bash

# 1. Определяем текущее время для формирования имени резервной копии

timestamp=`date +%Y-%m-%d-%H-%M”`

# 2. Определяем какие каталоги будем бакапить

backupFS=”/bin /boot /dev /etc /lib /opt /root /sbin /srv /usr /var /initrd.img /vmlinuz ”

# 3. Определяем куда будем бакапить

backupTO=/home/su1c1d3/backup

# 4. Записываем дату и время начала бэкапа
echo «`date` — Start» » /home/su1c1d3/backup/backup.log

# 5. Определяем сколько времени будем хранить резервные копии

KeepTime=7

# 6. Проверим, есть ли каталог куда бакапить

if [ -d $backupTO ]; then

# 7. Удалим старые файлы которые хранятся более времени KeepTime

find $backupTO -maxdepth 1 -name \*.tar.gz -mtime +${KeepTime} -exec rm -f {} \;

# 8. Начинаем делать резервную копию для каждого каталога описанного переменной backupFS

for i in $backupFS

do

# 9. Удаляем лишние символы “/”

j=`expr ${i//\//-}`

# 10. Делаем резервную копию каждой директории в отдельный файл

# имя которого формируется автоматически

tar -zcvf $backupTO/`hostname`.${timestamp}.${j}.tar.gz $i

# 11. # записываем дату и время окончания бэкапа
echo «`date` — Finish» »/home/su1c1d3/backup/backup.log

# 12. Выводим сообщение что операция по созданию резервной копии прошла успешно

echo “$i is done”

done

else

echo “backup directory is missing...exiting”

exit 1

fi

При его запуске выдает следующую ошибку:
Цитировать
/usr/local/sbin/mybackup: line 9: /boot: Is a directory
«Вс. авг. 3 13:29:15 SAMT 2014 — Start» » /home/su1c1d3/backup/backup.log

При этом не создавая лог файл.
Почему ему не нравится директория /boot?

Оффлайн SU1C1D3

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Backup скрипт
« Ответ #1 : 07 Августа 2014, 21:23:43 »
Что никто не знает в чем проблема?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Backup скрипт
« Ответ #2 : 07 Августа 2014, 22:46:53 »
Цитировать
echo «`date` — Start» » /home/su1c1d3/backup/backup.log
А что с кавычками?? Они реально такие? И зачем
Цитировать
Удаляем лишние символы “/”
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн SU1C1D3

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Backup скрипт
« Ответ #3 : 08 Августа 2014, 21:09:53 »
Цитировать
echo «`date` — Start» » /home/su1c1d3/backup/backup.log
А что с кавычками?? Они реально такие? И зачем
Цитировать
Удаляем лишние символы “/”
Да такие. Чтобы дату нормально формировал.
"Удалить лишние символы" это уже было скрипте, я просто добавил свои директории.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Backup скрипт
« Ответ #4 : 08 Августа 2014, 21:19:58 »
Насколько я понимаю команда должна быть с таким форматом echo «`date` — Start» >> /home/su1c1d3/backup/backup.log И я бы закоментировал эту строчку j=`expr ${i//\//-}` — не надо удалять символы «/»
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн SU1C1D3

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Backup скрипт
« Ответ #5 : 09 Августа 2014, 06:51:09 »
ОК это все хорошо, но почему ему не нравится 9 строка?
Цитировать
/usr/local/sbin/mybackup: line 9: /bin: Is a directory

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
Re: Backup скрипт
« Ответ #6 : 09 Августа 2014, 10:20:07 »
Кавычками и не нравится, вангую что скрипт утянут с какого то сайта где правильные кавычки "стилизуются" под неправильные
Код: (bash) [Выделить]
#!/bin/bash


# 1. Определяем текущее время для формирования имени резервной копии


timestamp=`date +%Y-%m-%d-%H-%M”`


# 2. Определяем какие каталоги будем бакапить


backupFS="/bin /boot /dev /etc /lib /opt /root /sbin /srv /usr /var /initrd.img /vmlinuz "


# 3. Определяем куда будем бакапить


backupTO=/home/su1c1d3/backup


# 4. Записываем дату и время начала бэкапа
echo "`date` — Start" >> /home/su1c1d3/backup/backup.log


# 5. Определяем сколько времени будем хранить резервные копии


KeepTime=7


# 6. Проверим, есть ли каталог куда бакапить


if [ -d $backupTO ]; then


# 7. Удалим старые файлы которые хранятся более времени KeepTime


find $backupTO -maxdepth 1 -name \*.tar.gz -mtime +${KeepTime} -exec rm -f {} \;


# 8. Начинаем делать резервную копию для каждого каталога описанного переменной backupFS


for i in $backupFS


do


# 9. Удаляем лишние символы “/”


j=`expr ${i//\//-}`


# 10. Делаем резервную копию каждой директории в отдельный файл


# имя которого формируется автоматически


tar -zcvf $backupTO/`hostname`.${timestamp}.${j}.tar.gz $i


# 11. # записываем дату и время окончания бэкапа
echo "`date` — Finish" >>/home/su1c1d3/backup/backup.log


# 12. Выводим сообщение что операция по созданию резервной копии прошла успешно


echo "$i is done"


done


else


echo "backup directory is missing...exiting"


exit 1


fi


Я бы лучше писал так конечно, понятно что куда и компактненько
Код: (bash) [Выделить]

#!/bin/bash
timestamp=`date +%Y-%m-%d-%H-%M` # Определяем текущую дату
backupFS="/bin /boot /dev /etc /lib /opt /root /sbin /srv /usr /var /initrd.img /vmlinuz " # Определяем какие каталоги будем бакапить
backupTO="/home/su1c1d3/backup" # Определяем куда будем бакапить
backupLog="/home/su1c1d3/backup/backup.log"
KeepTime=7 # Определяем время хранения резервные копии


echo "$timestamp — Start" >> $backupLog # Записываем дату начала бэкапа
if [ -d $backupTO ]; then # Проверим наличие каталога для резеравирования
   find $backupTO -maxdepth 1 -name \*.tar.gz -mtime +${KeepTime} -exec rm -f {} \; # Удалим файлы cтарше KeepTime
   for i in $backupFS #Начинаем делать резервную каталогов из backupFS
   do
      j=`expr ${i//\//-}` # Удаляем лишние символы “/”
      tar -zcvf $backupTO/`hostname`.${timestamp}.${j}.tar.gz $i  # сжимаем в архив
      echo "$timestamp — Finish" >> $backupLog # записываем дату и время окончания бэкапа
      echo "$i is done" # Выводим сообщение о завершении
   done
else
   echo "backup directory is missing...exiting"
   exit 1
fi
« Последнее редактирование: 09 Августа 2014, 10:45:21 от SvMidi »
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн SU1C1D3

  • Автор темы
  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Backup скрипт
« Ответ #7 : 09 Августа 2014, 21:47:52 »
вырезано модератором
Предложенный вами 2й вариант скрипта заработал. Но теперь другая заминка. Архив создается отдельно на каждый каталог. Как можно объединить их в один файл?

Предупредил по 2.11 — Дмитрий Бо
« Последнее редактирование: 10 Августа 2014, 13:38:58 от Дмитрий Бо »

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
Re: Backup скрипт
« Ответ #8 : 13 Августа 2014, 09:19:30 »
Можно добавить после цикла что то вроде:
Код: (bash) [Выделить]
tar -cf $backupTO/`hostname`.${timestamp}.tar  $backupTO/`hostname`.${timestamp}*.tar.gz
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Backup скрипт
« Ответ #9 : 13 Августа 2014, 09:27:59 »
А можно убрать сам цикл заменив его 1-й командой
Код: (bash) [Выделить]
tar -zcvf $backupTO/`hostname`.${timestamp}.tar.gz "$backupFS"
« Последнее редактирование: 13 Августа 2014, 12:08:22 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Backup скрипт
« Ответ #10 : 13 Августа 2014, 09:52:36 »
cd /
tar zpcvf test.gz.tar boot etc root usr
Wars ~.o

 

Страница сгенерирована за 0.045 секунд. Запросов: 25.