Синхронизация сетевых папок по SSH на Linux Ubuntu с помощью rsync

Встала необходимость ежедневной синхронизации сетевых папок файлхранилища организации на сервер BACKUP  (Linux Ubuntu)

Для начала установим утилиты для монтирования сетевых папок:

sudo apt-get install cifs-utils

Соглашаемся со всеми вопросами и устанавливаем.

Далее нам неодходимо создать папку, точку монтирования целевого сетевого каталога у нас в системе.
У меня она это так делается:

sudo mkdir /home/mount

Монтируем сюда сетевой каталог:

sudo mount.cifs //192.168.0.1/Share/ /home/mount/ -o user=*,password=*

sudo mount.cifs //ПАПКА_ИСТОЧНИК_СЕТЕВОГО_РЕСУРСА /ЛОКАЛЬНАЯ_ПАПКА_ТОЧКА_МОНТИРОВАНИЯ_СЕТЕВОГО_РЕСУРСА -o user=(ПОЛЬЗОВАТЕЛЬ_УДАЛЕННОЙ_ПАПКИ, ЕСЛИ РАЗРЕШЕНО ВСЕМ, ТО *-звездочка),password=(ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_УДАЛЕННОЙ_ПАПКИ, ЕСЛИ РАЗРЕШЕНО ВСЕМ, ТО *-звездочка) Между комбинациями user и password стоит запятая без пробелов

Добавляем автомонтирование при загрузке:

sudo nano /etc/fstab

Вписываем на самую последнюю строчку:

//192.168.1.152/share/ /home/mount      cifs    defaults        0       0

//СЕТЕВОЙ_КАТАЛОГ/ /ЛОКАЛЬНЫЙ_КАТАЛОГ_ТОЧКА_МОНТИРОВАНИЯ/ ОСТАЛЬНОЕ БЕЗ ИЗМЕНЕНИЙ

Ctrl+O - соглашаемся, выходим.

Создаем скрипт синхронизации:

sudo nano /home/rsync.sh

Туда пишем:


#!/bin/bash
naznachenie='/home/mirror/tmp/'
istochnik='/home/mount'
rsync -az --delete --exclude=”*Thumbs.db” $istochnik $naznachenie

a – заменяет ряд ключей (-rlptgoD):
r – рекурсивная синхронизация вместе с вложенными папками
l – при синхронизации сохранять символические ссылки
p – сохранять права на файлы
t – сохранять время изменения
g – сохранять группу
o – сохранять владельца
D – сохранять файлы девайса и специальны файлы (я так понимаю, что это речь о сохранении скрытых файлов и файлов типа .listing)
v – показывать информацию о ходе синхронизации. Просто по умолчанию rsync запускается в фоновом режиме. А с этим флагом будет работать как обычная программа и выдавать название каждого синхронизируемого файла. Так же можно написать -vv, тогда информации будет выдано еще больше.
z – при копировании сжимает данные. Если синхронизируем архивы, то лучше наверное не использовать.
--exclude=”*Thumbs.db” - запрещает копирование Виндового мусора типа скрытых файлов Thumbs.db
--delete - удаление в папке назначения тех файлов и папок, которых нет в источнике

Назначим нашему скрипту синхронизации права на исполнение:

sudo chmod +x /home/rsync.sh

Далее пропишем в CRON расписание запуска этого скрипта:

sudo crontab -e

В самом низу пишем:

0 0 * * * /home/rsync.sh

Я настроил ежедневный запуск скрипта в 0 часов 00 минут
Сохраняем и выходим. Готово.
Чуть позже я распишу как создавать бекапы и сохранять их в папки с датами в названиях папок и автоочисткой папок которые старее 30 дней.