Простой скрипт для бекапа сетевого каталога (Linux)

Almas 2016 M10 19
422
2
1
0

Если надо делать копию каталога который находится на Windows машине, поможет простой скрипт, конечно он ну очень простой, хотя и этого бывает достаточно.   #!/bin/bash D=$(date  +%Y-%m-%d) mount -t...

Если надо делать копию каталога который находится на Windows машине, поможет простой скрипт, конечно он ну очень простой, хотя и этого бывает достаточно.

В общем, будем сохранять файлы с машины Windows которая имеет IP 192.168.10.100 и имя хоста "coputername". Допустим на этом хосте имеется общая (расшаренная) папка с именем "SharedFolder" к которой можно попасть введя логин User и пароль Password/

Создаем файл,  например /opt/backupfolder.sh

Хотя правильный каталог для скриптов обычно находится по адресу /usr/bin

#!/bin/bash
D=$(date  +%Y-%m-%d)
mount -t cifs //192.168.10.100/SharedFolder /mnt/storage -o user=User,password=Password,domain=computername
mkdir -p /mnt/share/tempfolder
rsync -zvr /mnt/storage/ /mnt/share/tempfolder/
tar -zcf /mnt/share/backup/Folder$D.tar.gz /mnt/share/tempfolder/
rm -rf /mnt/share/tempfolder
echo Deleting copies
find  /mnt/share/backup/ -mtime -3 -exec rm {} \;
echo Umount share //192.168.10.100/SharedFolder
umount //192.168.10.100/SharedFolder

Здесь:

  • Строка 1: Переменная D хранит текущею дату
  • Строка 2: Команда mount монтирует каталог Windows машины "computername" используя логин User и пароль Password в точку /mnt/storage/
  • Строка 3: Создаем временный каталог /mnt/share/tempfolder на Linux хосте
  • Строка 4: С помощью rsync копируем содержимое /mnt/storage во временный каталог /mnt/share/tempfolder
  • Строка 5: Как только данные скопировались в каталог /mnt/share/tempfolder, приступаем к их сжатию и созданию архива в каталоге /mnt/share/backup/. Имя файла архива при этом FolderТек.Дата.tar.gz
  • Строка 6: Архив создан, теперь удаляем содержимое каталога /mnt/share/tempfolder
  • Строка 7: Проверяем количество файлов резервных копий в каталоге /usr/share/backup/ которые старше трех суток, если мы делаем бекап каждый день их три штуки от каждого дня, удаляем лишние.
  • Строка 8: Отключаем сетевой каталог //192.168.10.100/SharedFolder
 

Для теста скрипта, можно создать временные файлы со старой датой создания:

# touch -d '19 OCT 2016 14:16' Folder2016-10-19.tar.gz

И потом проверить командой find:

# find /mnt/share/backup/ -type f -mtime -3

Здесь команда find найдет все файлы старше 3 дней.

Оцените пост

1

Комментарии

0
А если там 500 гб данных? Такой скрипт разрастит данные до 1 тб когда будет делать архив :)
А сколько времени это всё займет? Неделю? Ну пару суток, на средненьких ресурсах.

Виндошару лучше монтировать с опциями soft,intr,nounix - чтобы не повесить сервер, если вдруг с виндошарой что-нибудь внезапно приключится (не редкость ведь, правда?). Ну или с каналом.

Хотя, вчитался и понял что у тебя тут сервер типа винда, и с него нужно снять бэкап линуксовой машиной :)

А зачем упаковка? Почему бы просто не синхронизировать и всё на этом? Это к вопросу о том, если там много данных.

Кстати, запилил тут на днях скрипт для сервера, который мониторит жесткий диск на linux и шлет сообщения на email, в случае переполнения.



0
Это виндовый сервер с общими папками, там инфы не много. И да, я думал про опции, чтобы не повесить сервер. Со временем перепишу его, сделаю по лучше
Показать комментарии
Дальше