Bash скрипт для копирования файлов из терминала в Яндекс диск.

Копирование файлов или каталогов на Яндекс.Диск с помощью Bash и rclone

Для копирования файлов или каталогов на Яндекс.Диск с помощью Bash, можно использовать утилиту rclone, которая поддерживает работу с Яндекс.Диском через WebDAV.

Вот пошаговая инструкция и скрипт для копирования файлов или каталогов на Яндекс.Диск.

Шаги по установке и настройке rclone:

  1. Установить rclone: Если у тебя еще нет rclone, установи его:
  2. sudo dnf install rclone
  3. Настроить rclone для работы с Яндекс.Диском: Используя rclone, настрой соединение через WebDAV. Для этого:
    • Выполни команду:
    • rclone config
    • Выбери New remote (новое подключение).
    • Дай имя подключению, например, yadisk.
    • Когда будет предложено выбрать тип облачного хранилища, введи webdav.
    • Для URL используй: https://webdav.yandex.ru
    • Для User введи свой логин от Яндекс.Диска.
    • Для Password введи свой пароль (или приложение может запросить использование OAuth-ключа).
    • Остальные настройки можно оставить по умолчанию.

    Теперь rclone настроен для работы с Яндекс.Диском.

  • Установка dialog: Если у тебя нет утилиты dialog, установи ее:
  • sudo dnf install dialog
  • Скрипт для копирования:
  • #!/bin/bash
    
    # Название удаленного подключения (настроенного в rclone)
    REMOTE_NAME="yadisk"
    # Папка на Яндекс.Диске, куда будем копировать файлы
    REMOTE_DIR="Backups/"
    
    # Проверка наличия rclone и dialog
    if ! command -v rclone &> /dev/null; then
        echo "Установите rclone: sudo dnf install rclone"
        exit 1
    fi
    
    if ! command -v dialog &> /dev/null; then
        echo "Установите dialog: sudo dnf install dialog"
        exit 1
    fi
    
    # Функция для выбора каталога или файла с помощью диалога
    choose_file_or_directory() {
        FILE_PATH=$(dialog --stdout --title "Выберите файл или каталог для копирования" --fselect $HOME/ 14 48)
    
        if [ -z "$FILE_PATH" ]; then
            echo "Отмена: файл или каталог не был выбран."
            exit 1
        fi
    
        echo "Выбранный файл или каталог: $FILE_PATH"
    }
    
    # Вызов функции выбора
    choose_file_or_directory
    
    # Проверка, существует ли выбранный файл или каталог
    if [ ! -e "$FILE_PATH" ]; then
        dialog --msgbox "Ошибка: Файл или каталог $FILE_PATH не существует!" 6 40
        exit 1
    fi
    
    # Копирование на Яндекс.Диск через rclone
    dialog --infobox "Копирование $FILE_PATH на Яндекс.Диск..." 3 40
    rclone copy "$FILE_PATH" "$REMOTE_NAME:$REMOTE_DIR"
    
    # Проверка успешности копирования
    if [ $? -eq 0 ]; then
        dialog --msgbox "Копирование успешно завершено!" 6 40
    else
        dialog --msgbox "Ошибка при копировании на Яндекс.Диск!" 6 40
    fi
    
    # Очистка экрана после завершения
    clear
    

    Описание скрипта:

    • REMOTE_NAME — это имя подключения к Яндекс.Диску, которое ты настроил через rclone. В примере оно называется yadisk.
    • REMOTE_DIR — папка на Яндекс.Диске, куда будет копироваться выбранный файл или каталог. По умолчанию это Backups/, но ты можешь изменить путь.
    • Диалог выбора файла или каталога:
      • Используется команда dialog --fselect, которая открывает псевдографический интерфейс для выбора файла или каталога.
      • Пользователь может выбрать файл или директорию из своего домашнего каталога. Результат сохраняется в переменной FILE_PATH.
    • Проверка на существование файла или каталога:
      • Если пользователь не выбрал файл или каталог или он не существует, выводится сообщение об ошибке с помощью dialog --msgbox.
    • Копирование с помощью rclone:
      • После выбора и проверки файла скрипт копирует его на Яндекс.Диск в указанную директорию с помощью rclone copy.
    • Окно с результатом:
      • Если копирование прошло успешно, выводится сообщение об успешном завершении. В случае ошибки копирования также будет показано сообщение с помощью диалога.

    Как использовать:

    1. Сохрани скрипт в файл, например, yadisk_copy_gui.sh.
    2. Сделай скрипт исполняемым:
    3. chmod +x yadisk_copy_gui.sh
    4. Запусти его:
    5. ./yadisk_copy_gui.sh

    Теперь при запуске скрипта откроется псевдографический интерфейс для выбора файла или каталога, который ты хочешь скопировать на Яндекс.Диск. Это делает процесс более интерактивным и удобным для использования в терминале.