Синхронизация сетевых папок по 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 дней.