Содержание
Пошаговое руководство для организации надёжного подключения к удалённой SMB/CIFS-шаре.
Весь процесс будет состоять из следующих этапов:
- Подготовка системы и установка пакетов.
- Базовое монтирование шары.
- Настройка автоматического монтирования с использованием файла учётных данных.
- Тонкая настройка монтирования для бэкапов (права доступа и производительность).
- Устранение потенциальных проблем.
- Дополнительные опции для гибкой системы.
⚙️ Шаг 1: Подготовка системы и установка пакетов
Для подключения к шаре по протоколу SMB/CIFS нам понадобится пакет cifs-utils. Выполните в терминале:
sudo apt update sudo apt install cifs-utils
Создайте точку монтирования, куда будет примонтирована шара для бэкапов:
sudo mkdir -p /mnt/backup
🔌 Шаг 2: Ручное монтирование для проверки
Прежде чем настраивать автоматическое монтирование, стоит убедиться, что подключение работает. Используйте команду:
sudo mount -t cifs //SERVER_ADDRESS/SHARE_NAME /mnt/backup -o username=YOUR_USERNAME,password=YOUR_PASSWORD Подключение медсинтез: sudo mount -t cifs //192.168.210.6/Lims_backup_sql /mnt/backup -o username=lims,password=glnm2lH}
Пояснение параметров:
-t cifs: указывает тип файловой системы.SERVER_ADDRESS/SHARE_NAME).: путь к вашей SMB-шаре (например,192.168.1.100/backups/mnt/backup: ваша локальная папка для монтирования.-o: опции монтирования. Здесь мы передаём логин и пароль.
После этого проверьте, что шара примонтировалась успешно:
df -h | grep backup ls -la /mnt/backup
🔐 Шаг 3: Настройка автоматического монтирования при загрузке
Для автоматического монтирования при старте системы и для бэкапов по расписанию, необходимо внести запись в файл /etc/fstab.
3.1. Безопасное хранение пароля (файл учётных данных)
Хранить пароль в открытом виде в /etc/fstab небезопасно. Вместо этого, создадим файл с учётными данными.
Создайте файл, например, /etc/samba/backup.cred:
sudo mkdir -p /etc/samba sudo nano /etc/samba/backup.cred
Впишите в него ваши учётные данные:
username=YOUR_USERNAME password=YOUR_PASSWORD
Теперь ограничьте доступ к этому файлу, чтобы его мог читать только root:
sudo chmod 600 /etc/samba/backup.cred
3.2. Добавление записи в /etc/fstab
Теперь примонтируем шару с использованием файла учётных данных и нужных опций. Откройте /etc/fstab для редактирования:
sudo nano /etc/fstab
Добавьте в конец файла следующую строку:
\\192.168.210.6\Lims_backup_sql /mnt/backup cifs credentials=/etc/samba/backup.cred,uid=0,gid=0,file_mode=0600,dir_mode=0700,x-systemd.automount 0 0
Проверим каждый параметр детально:
credentials=/etc/samba/backup.cred: путь к файлу с логином/паролем.uid=0, gid=0: задаёт права от суперпользователя (root). Это оптимально для бэкапов, которые часто требуют доступа к разным файлам и часто запускаются отroot(черезcronили другие системы).file_mode=0600, dir_mode=0700: строгие права доступа: владелец (root) имеет полные права на чтение/запись для файлов (0600) и папок (0700), а все остальные пользователи доступ не получают.x-systemd.automount: важная опция для надёжности. Она включает "монтирование по требованию", благодаря чему система не зависнет, если сеть или сервер шары недоступны в момент загрузки ОС. Шара примонтируется автоматически при первом обращении к/mnt/backup.0 0: указывает системной утилитеdump(создание резервных копий) иfsck(проверка файловой системы) игнорировать этот ресурс.
Чтобы размонтировать текущее подключение (если оно активно) и проверить, как монтируется через/etc/fstab, выполните следующие шаги:
1. Размонтирование текущей шары
Используйте команду umount (обратите внимание: нет буквы "n" перед "mount"). Укажите точку монтирования или устройство:
sudo umount /mnt/backup
Если занято (например, вы находитесь внутри папки или какой-то процесс использует файлы), можно принудительно размонтировать:
sudo umount -l /mnt/backup # ленивое размонтирование (после завершения операций ввода-вывода) # или sudo umount -f /mnt/backup # форсированное размонтирование (не всегда работает для CIFS)
2. Проверка, что шара действительно размонтирована
mount | grep backup ls -la /mnt/backup # теперь должна показывать содержимое локальной пустой папки (или что там было до монтирования)
3. Монтирование через /etc/fstab
После исправления строки в /etc/fstab (с прямыми слешами) и размонтирования существующей шары, выполните:
sudo mount -a
Эта команда смонтирует все файловые системы из fstab, которые ещё не смонтированы. Она прочитает вашу новую запись и попробует подключить шара.
4. Проверка результата
mount | grep backup sudo df -h /mnt/backup sudo ls -la /mnt/backup
Если всё правильно, вы увидите примонтированную шару и её содержимое.
Альтернативный способ (без размонтирования)
Если вы просто хотите проверить, что запись в fstab корректна, но текущее ручное монтирование вам не мешает, можно не размонтировать, а попробовать перемонтировать специальной командой:
sudo mount -o remount /mnt/backup
Но эта команда применит опции из fstab только если точка монтирования уже была добавлена через fstab. Для ручного монтирования она не сработает. Поэтому надёжнее — размонтировать и выполнить mount -a.
Полезный совет
Если после sudo mount -a монтирование не происходит, но ошибок нет, попробуйте принудительно вызвать монтирование конкретной записи:
sudo mount /mnt/backup # mount сам найдёт запись в fstab по точке монтирования
Так вы увидите точную ошибку.
После успешной проверки можете оставить автоматическое монтирование как есть — при перезагрузке шара поднимется сама (благодаря x-systemd.automount).
### ⚡️ Шаг 4: Дополнительные опции для бэкапов При работе с бэкапами на Samba-шару, особенно с большими файлами, могут пригодиться эти опции. Добавьте их в строку `fstab` в раздел опций (через запятую). 1. **`nodfs`**: может ускорить работу при некоторых конфигурациях. 2. **`vers=3.0`**: принудительно использует протокол SMB версии 3.0. Это более современный и производительный протокол. Старые серверы могут работать с `vers=2.0` или `vers=2.1`. 3. **`rsize` и `wsize`**: размер блока для чтения и записи. Экспериментальные значения (например, `rsize=65536, wsize=65536`) могут повысить производительность. Без явного указания система сама подбирает оптимальные значения. 4. **`noserverino`**: может потребоваться, если SMB-сервер генерирует некорректные идентификаторы индексных дескрипторов (inode), что вызывает ошибки при копировании. Пример улучшенной строки в `fstab`:
//SERVER_ADDRESS/SHARE_NAME /mnt/backup cifs credentials=/etc/samba/backup.cred,uid=0,gid=0,file_mode=0600,dir_mode=0700,vers=3.0,x-systemd.automount,noserverino 0 0
### 🔄 Шаг 5: Применение конфигурации После редактирования `/etc/fstab` выполните команды, чтобы перечитать конфигурацию и применить настройки: ```bash # Перечитать конфигурацию systemd и применить изменения sudo systemctl daemon-reload # Примонтировать все файловые системы из fstab sudo mount -a # Проверить, что шара примонтировалась mount | grep cifs
🩺 Шаг 6: Диагностика распространённых проблем
* **''mount error(13): Permission denied''**: обычно указывает на неверное имя пользователя/пароль в файле ''/etc/samba/backup.cred''. Проверьте также права доступа к этому файлу (''sudo chmod 600 ...'').
* **''mount error(115): Operation now in progress''**: система не может установить соединение с SMB-сервером. Проверьте сеть, доступность сервера (''ping SERVER_ADDRESS'') и правильность адреса шары в ''/etc/fstab''.
* **Сервер шары не поддерживает SMB1**: используйте опцию ''vers=3.0''.
* **Ошибки прав доступа при записи бэкапов**: убедитесь, что в ''/etc/fstab'' указаны ''uid=0, gid=0''.
🚀 Шаг 7: Дополнительные возможности
autofsдля сложных сценариев: для больших инфраструктур или временных монтирований можно рассмотретьautofs. Он автоматически монтирует шару при обращении к ней и отмонтирует через заданное время простоя. Это более гибкий, но и более сложный в настройке инструмент.- Мониторинг: добавьте в свои скрипты проверку доступности шары перед записью бэкапа, например:
if mountpoint -q /mnt/backup; then echo "Samba share is mounted, proceeding with backup..." else echo "ERROR: Backup share is not mounted!" exit 1 fi - Логирование: ведите учёт успешных и неудачных операций копирования, чтобы своевременно отслеживать проблемы.
Настройка бэкапирования в смонтированную директорию
#Backup configs to cloud file storage 0 */7 * * * root /home/dumps/backup_config.sh >> /home/dumps/progs_conf/backup.log 2>&1 1>&1 0>&1
#!/bin/bash echo "date +'%m-%d-%Y'" /usr/bin/rsync -av --progress /srv/ /mnt/backup/srv/ /usr/bin/rsync -av --exclude "*.hprof" --progress /home/runner/assist/ /mnt/backup/assist/ /usr/bin/rsync -av --progress /etc/nginx/sites-enabled/ /home/dumps/progs_conf/ /usr/bin/rsync -av --progress /etc/supervisor/cond.d/ /home/dumps/progs_conf/ /usr/bin/rsync -av --progress /etc/zabbix /home/dumps/progs_conf/ /usr/bin/rsync -av --progress --include "*.conf" /etc/postgresql /home/dumps/progs_conf/ sudo -u postgres psql -U postgres -d postgres -c "\l" > /home/dumps/postgres_configuration sudo -u postgres psql -U postgres -d postgres -c "SHOW config_file" >> /home/dumps/postgres_configuration sudo -u postgres psql -U postgres -d postgres -c "select * from pg_settings" >> /home/dumps/postgres_configuration #sudo -u medsyn_back /usr/bin/rsync -av --progress /home/dumps medsyn_back@demo.odgassist.ru:/mnt/nfs/meds_lims/ /usr/bin/rsync -av --delete --progress /home/dumps/ /mnt/backup/dumps/
