Автоматическая выгрузка папки на Яндекс Диск с Linux сервера
Задача автоматической синхронизации файлов с облачным хранилищем возникает у многих системных администраторов и DevOps-инженеров. Если вам нужно, чтобы при появлении новой папки на файловой шаре Linux сервера она сразу загружалась на Яндекс Диск, а затем приходила ссылка в Telegram, это можно решить с помощью скриптов и утилит. Разберём пошаговую инструкцию.
Почему это удобно?
Автоматизация выгрузки избавляет от ручного копирования файлов, снижает риск ошибок и ускоряет обмен данными. Вы получаете готовую ссылку на папку в облаке и уведомление в мессенджер - всё без участия человека.
Инструменты для выгрузки на Яндекс Диск
Для работы с Яндекс Диском из командной строки Linux используется официальная утилита yadisk (или yadisk-cli). Она позволяет загружать, скачивать и управлять файлами через REST API. Установка выполняется через pip:
pip install yadiskТакже можно использовать curl и API Яндекс Диска напрямую, но библиотека yadisk упрощает авторизацию и работу с токенами.
Получение OAuth-токена
Для доступа к Яндекс Диску нужно зарегистрировать приложение на oauth.yandex.ru и получить токен. Токен сохраняется в переменной окружения или конфигурационном файле скрипта.
Скрипт автоматической загрузки папки
Создайте bash-скрипт, который отслеживает появление новой папки в указанном каталоге и загружает её на Яндекс Диск. Пример логики:
- Используйте inotifywait (из пакета inotify-tools) для мониторинга файловой системы.
- При создании нового каталога запускайте загрузку через yadisk.
- После завершения загрузки получайте публичную ссылку на папку через API.
- Отправляйте ссылку в Telegram через бота.
Пример скрипта
#!/bin/bash
TARGET_DIR="/path/to/watch"
REMOTE_PATH="/backups/"
TOKEN="ваш_токен"
TELEGRAM_BOT_TOKEN="токен_бота"
CHAT_ID="ID_чата"
inotifywait -m -e create --format "%f" "$TARGET_DIR" | while read NEWITEM
do
if [ -d "$TARGET_DIR/$NEWITEM" ]; then
python3 -c "
import yadisk
y = yadisk.YaDisk(token='$TOKEN')
y.mkdir('$REMOTE_PATH/$NEWITEM')
for root, dirs, files in os.walk('$TARGET_DIR/$NEWITEM'):
for file in files:
y.upload(os.path.join(root, file), '$REMOTE_PATH/$NEWITEM/' + file)
"
LINK=$(python3 -c "
import yadisk
y = yadisk.YaDisk(token='$TOKEN')
pub = y.publish('$REMOTE_PATH/$NEWITEM')
print(pub['public_url'])
")
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID&text=Новая папка: $LINK"
fi
doneНастройка Telegram-бота
Создайте бота в @BotFather, получите токен и узнайте ваш chat_id (можно через @userinfobot). Скрипт будет отправлять сообщение с публичной ссылкой на загруженную папку.
Альтернативные решения
Если не хотите писать скрипты, рассмотрите готовые инструменты: rclone (поддерживает Яндекс Диск через WebDAV), duplicity или rsync с облачными плагинами. Однако они не дают прямую ссылку без доработок.
Заключение
Автоматическая выгрузка папки с Linux сервера на Яндекс Диск с уведомлением в Telegram - реальная задача, решаемая за час. Используйте yadisk для загрузки, inotifywait для отслеживания изменений и Telegram API для оповещений. Это повысит эффективность работы и избавит от рутины.