BashTex | Linux
Open in Telegram
Авторский канал для тех, кто хочет глубже погрузиться в мир Linux. Подойдет для разработчиков, системных администраторов и DevOps Реклама: @dad_admin
Show more2 523
Subscribers
-224 hours
-67 days
No data30 days
Posts Archive
2 523
Автоматическая синхронизация файлов между двумя каталогами
Автоматическая синхронизация каталогов полезна для резервного копирования, синхронизации данных между устройствами или поддержания одинакового содержимого в разных местах. В Linux это можно легко настроить с помощью утилиты
rsync и расписания через cron.
1. Синхронизация с помощью rsync. rsync - это инструмент для синхронизации файлов и папок. Он поддерживает инкрементное копирование, что означает передачу только измененных файлов, экономя время и ресурсы.
rsync -av --delete /source/directory/ /destination/directory/
Где:
-a - архивный режим, сохраняет права доступа, владельцев и временные метки.
-v - подробный вывод (можно убрать для «тихой» работы).
--delete - удаляет файлы в целевом каталоге, если их больше нет в исходном, поддерживая полную идентичность.
Пример использования:
rsync -av --delete /home/user/documents/ /backup/documents/
sending incremental file list
file1.txt
file2.txt
deleting old_file.txt
В этом примере файлы file1.txt и file2.txt синхронизируются, а old_file.txt удаляется из каталога /backup/documents/, так как его больше нет в исходной директории.
2. Настройка автоматической синхронизации с помощью cron. Чтобы автоматизировать процесс, можно добавить команду rsync в cron, который позволит запускать её по расписанию.
Открываем крон: crontab -e
И добавим задание для выполнения синхронизации каждые 6 часов. Строка будет выглядеть так:
0 */6 * * * rsync -av --delete /home/user/documents/ /backup/documents/
Расшифровка:
0 - запускает команду в начале часа.
*/6 - выполняет команду каждые 6 часов.
Остальные * - символы для указания всех дней, месяцев и дней недели.
Теперь cron будет автоматически запускать rsync для синхронизации каталогов каждые 6 часов.
3. Мониторинг синхронизации. Для того чтобы убедиться в успешном выполнении синхронизации, можно перенаправить вывод в лог:
rsync -av --delete /source/directory/ /destination/directory/ >> /var/log/rsync.log 2>&1
Теперь все действия будут записаны в /var/log/rsync.log, и можно будет легко проверить, была ли синхронизация успешной.
BashTex 📱 #linux #utils2 523
Сжимаем данные до неузнаваемости
Для сжатия в Linux существует множество инструментов, и каждый из них подходит для разных типов задач. Рассмотрим несколько популярных методов сжатия, которые помогут сжать данные буквально «до неузнаваемости».
1. gzip - стандартный метод сжатия
gzip large_file.txt
Вывод до и после:
ls -lh large_file.txt
-rw-r--r-- 1 user user 10M large_file.txt
ls -lh large_file.txt.gz
-rw-r--r-- 1 user user 2.5M large_file.txt.gz
Для разархивации используйте команду gunzip
2. Сжимаем с максимальной степенью: xz. Если вам нужно максимально компактное сжатие, используйте xz. Он сжимает данные сильнее, чем gzip, но работает немного медленнее.
xz large_file.txt
Вывод до и после:
$ ls -lh large_file.txt
-rw-r--r-- 1 user user 10M large_file.txt
$ xz large_file.txt
$ ls -lh large_file.txt.xz
-rw-r--r-- 1 user user 1.5M large_file.txt.xz
Для разархивации используйте unxz
3. Архивация и сжатие с tar и gzip. Если нужно сжать несколько файлов или каталогов, tar отлично подойдет. Он создаёт архив, а затем его можно сжать с помощью gzip или xz.
tar -czvf archive.tar.gz folder_to_compress
Чтобы разархивировать каталог или файлы: tar -xzvf archive.tar.gz
В результате:
gzip - для обычного сжатия
xz — для максимального уменьшения размера
tar — для работы с несколькими файлами
BashTex 📱 #linux #utils2 523
Скрытие файлов и каталогов в Linux
1. Создание скрытых файлов и каталогов. Чтобы скрыть файл или каталог, достаточно добавить точку перед его именем. Например, создадим скрытый файл и каталог:
touch .hidden_file
mkdir .hidden_folder
Эти команды создадут файл .hidden_file и папку .hidden_folder, которые не будут отображаться при обычном просмотре каталога.
2. Просмотр скрытых файлов. Чтобы увидеть скрытые файлы и каталоги, используйте флаг -a с командой ls:
ls -a
. .. .hidden_file .hidden_folder Documents Downloads
3. Работа с переменной IGNORE_PATTERN. В некоторых системах можно настроить переменную окружения IGNORE_PATTERN, чтобы ls игнорировал файлы с определёнными шаблонами:
export IGNORE_PATTERN="*backup*"
Теперь ls будет игнорировать файлы и каталоги, содержащие "backup" в названии.
4. Использование chattr для скрытия и защиты файлов. Команда chattr позволяет установить атрибуты файлов, чтобы они не могли быть изменены или удалены. Например, чтобы сделать файл неизменяемым, используйте:
sudo chattr +i important_file
Поздравляю, теперь даже root не сможет изменить или удалить important_file без снятия атрибута:
$ rm important_file
rm: невозможно удалить 'important_file': Операция не позволена
Чтобы снять этот атрибут, используйте:
sudo chattr -i important_file
BashTex 📱 #linux #utils2 523
Структурируем процессы в виде дерева
ptree - отличный инструмент для тех, кто хочет не просто увидеть список процессов, а взглянуть на них в форме иерархического дерева. Это не только наглядно, но и помогает разобраться, кто запустил кого и в каком порядке.
1. Фильтрация по PID. Если нужно увидеть дерево для конкретного процесса, можно задать его PID. Например, чтобы отобразить дерево для процесса с PID 1234:
ptree 1234
1234 /usr/bin/python3 main_app.py
├─ 1250 /usr/bin/python3 worker_task.py
│ ├─ 1252 /usr/bin/python3 worker_task.py sub_task1
│ ├─ 1253 /usr/bin/python3 worker_task.py sub_task2
│ └─ 1254 /usr/bin/python3 worker_task.py sub_task3
└─ 1260 /bin/bash helper_script.sh
└─ 1261 /bin/sleep 300
Это полезно для поиска всех дочерних процессов конкретного приложения.
2. Использование вместе с grep. ptree можно комбинировать с grep, чтобы быстро найти интересующий вас процесс. Например, чтобы увидеть дерево для всех процессов, содержащих "sh":
ptree | grep sh
1260 /bin/bash helper_script.sh
└─ 1261 /bin/sleep 300
3. Анализ зависших процессов. Если наблюдаются торможения, можно использовать ptree, чтобы найти специфические процессы. Например, команды для поиска всех «зомби»-процессов:
ptree | grep defunct
1234 /usr/bin/python3 main_app.py
├─ 1235 [worker_task] <defunct>
├─ 1240 [sub_task1] <defunct>
└─ 1250 /bin/bash helper_script.sh
└─ 1251 [sleep] <defunct>
Команда отобразит PID и родительский процесс каждого «зомби».
Используйте ptree для чистоты и порядка в своих процессах и пускай ничего лишнего не занимает ресурсы вашей машины!
BashTex 📱 #linux #utils2 523
Нестандартное использование awk
awk — это не просто утилита, а целый мини-язык программирования, заточенный под обработку текстов. Разберём пару действительно интересных трюков, которые могут пригодиться в реальной жизни.
1. Обработка JSON с awk. Хотя jq справляется с JSON лучше, бывают случаи, когда под рукой только awk. Если структура JSON несложная, awk может помочь быстро вытащить нужные данные. Пример:
echo '{"name": "Alice", "age": 30, "city": "Paris"}' | awk -F '[,:{}]' '{print $4}'
Здесь -F '[,:{}]' определяет разделители как запятые, двоеточия и фигурные скобки, что позволяет достать значение "Alice". Конечно, с более сложными JSON это сложнее, но для быстрых нужд работает.
2. Простой анализ логов с условной фильтрацией. awk отлично подходит для задач быстрого анализа логов. Например, подсчитаем количество обращений с конкретных IP-адресов:
awk '{count[$1]++} END {for (ip in count) if (count[ip] > 100) print ip, count[ip]}' access.log
Эта команда выводит IP-адреса, которые встречаются более 100 раз, что может быть полезно для выявления подозрительной активности.
3. Подсчёт по временным меткам. Когда нужно анализировать логи по времени, например, суммировать количество событий по часам. Вот способ быстро агрегировать логи по часам:
awk '{split($4, a, ":"); hour=a[2]; count[hour]++} END {for (h in count) print h, count[h]}' access.log
Здесь split($4, a, ":") разбивает дату по двоеточию, чтобы вытащить час, и count[hour]++ подсчитывает обращения для каждого часа.
Все это лишь малая часть того, что можно сделать с awk. Используйте эти техники, чтобы сэкономить время и по-настоящему раскрыть потенциал командной строки.
BashTex 📱 #linux #utils2 523
Список тегов:
Скрипты: #bash
Отладка: #debug
Утилиты: #utils
Линукс: #linux
Мониторинг: #monitoring
Сервисы: #services
Девопс: #devops
Таблицы: #sheets
GIT: #git
Mysql: #mysql
Безопасность: #security
Сети: #networks
Available now! Telegram Research 2025 — the year's key insights 
