Linux Basics
???? Лекция: Основы Linux
Linux — это свободная операционная система на основе UNIX, которая лежит в основе большинства серверов в мире. Для DevOps-инженера знание Linux — это фундамент профессии.
Файловая система Linux
В отличие от Windows, Linux использует единое дерево каталогов, начинающееся с корня /. Основные директории:
- /home — домашние каталоги пользователей
- /etc — конфигурационные файлы системы
- /var — изменяемые данные (логи, кэш)
- /usr — пользовательские программы
- /bin — основные системные команды
Основные команды навигации
# Показать текущую директорию
pwd
# Перейти в домашнюю директорию
cd ~
# Перейти в папку
cd /var/log
# Вернуться на уровень выше
cd ..
# Показать содержимое директории
ls -la
# Создать директорию
mkdir my_project
# Удалить файл
rm file.txt
# Удалить директорию рекурсивно
rm -rf directory/
Работа с файлами
# Создать файл
touch newfile.txt
# Посмотреть содержимое
cat file.txt
# Редактировать файл
nano file.txt
# Копировать файл
cp source.txt destination.txt
# Переместить/переименовать
mv oldname.txt newname.txt
# Найти файл
find /home -name "*.log"
Права доступа
Linux использует систему прав доступа для защиты файлов. Каждый файл имеет владельца и группу, а также права на чтение (r), запись (w) и выполнение (x).
# Посмотреть права
ls -l file.txt
# -rw-r--r-- 1 user group 1024 Dec 01 18:00 file.txt
# Изменить права (числовой формат)
chmod 755 script.sh # rwxr-xr-x
# Изменить права (символьный формат)
chmod +x script.sh # добавить право на выполнение
# Изменить владельца
chown user:group file.txt
????️ Практические задания
Создание структуры проекта
Создайте файловую структуру для веб-проекта с использованием командной строки.
- Создайте директорию
web_projectи перейдите в неё - Создайте поддиректории:
src,tests,docs - В директории
srcсоздайте файлыindex.htmlиstyle.css - Создайте файл
README.mdв корне проекта - Проверьте структуру командой
treeилиls -R
web_project/
├── README.md
├── docs/
├── src/
│ ├── index.html
│ └── style.css
└── tests/
Работа с правами доступа
Настройте правильные права доступа для скриптов и конфигурационных файлов.
- Создайте скрипт
backup.shс любым содержимым - Дайте скрипту права на выполнение (755)
- Создайте файл
config.confс конфиденциальными данными - Установите права 600 для config.conf (только владелец может читать/писать)
- Проверьте права командой
ls -l
touch backup.sh
chmod 755 backup.sh
touch config.conf
chmod 600 config.conf
ls -l
# -rwxr-xr-x backup.sh
# -rw------- config.conf
???? Реальный кейс из практики
Задача
В компании "TechStartup" нужно было настроить автоматическое резервное копирование базы данных PostgreSQL на production-сервере. Бэкапы должны создаваться ежедневно в 3:00 ночи и храниться 30 дней.
Решение
Был создан bash-скрипт для автоматизации процесса:
#!/bin/bash
# Настройки
DB_NAME="production_db"
DB_USER="backup_user"
BACKUP_DIR="/var/backups/postgres"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz"
# Создание директории если не существует
mkdir -p $BACKUP_DIR
# Создание бэкапа
pg_dump -U $DB_USER $DB_NAME | gzip > $BACKUP_FILE
# Проверка успешности
if [ $? -eq 0 ]; then
echo "Backup успешно создан: $BACKUP_FILE"
# Удаление бэкапов старше 30 дней
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete
echo "Старые бэкапы удалены"
else
echo "Ошибка создания бэкапа!" >&2
exit 1
fi Затем скрипт был добавлен в cron для автоматического запуска:
# Запуск бэкапа каждый день в 3:00
0 3 * * * /opt/scripts/backup_db.sh >> /var/log/backup.log 2>&1
- ✓ Автоматические ежедневные бэкапы работают 2 года без сбоев
- ✓ Сэкономили 90% дискового пространства благодаря gzip-сжатию
- ✓ Успешно восстановили данные после инцидента в мае 2024
- ✓ Скрипт адаптирован для 15 других проектов компании
Что вы узнали из этого кейса
- Использование переменных в bash-скриптах
- Работу с датами и форматированием
- Создание директорий с проверкой существования
- Pipe операторы для передачи данных между командами
- Проверку кодов возврата и обработку ошибок
- Автоматизацию с помощью cron
- Логирование операций
