Автоматическая выгрузка папки на Яндекс Диск с 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 для оповещений. Это повысит эффективность работы и избавит от рутины.

    Часто задаваемые вопросы