Yvision.kz
kk
Разное
Разное
399 771 постов41 подписчиков
Всяко-разно
1
22:21, 19 октября 2016

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

Если надо делать копию каталога который находится на 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
1108
2