Копирование файлов или каталогов на Яндекс.Диск с помощью Bash и rclone
Для копирования файлов или каталогов на Яндекс.Диск с помощью Bash, можно использовать утилиту rclone, которая поддерживает работу с Яндекс.Диском через WebDAV.
Вот пошаговая инструкция и скрипт для копирования файлов или каталогов на Яндекс.Диск.
Шаги по установке и настройке rclone:
- Установить rclone: Если у тебя еще нет rclone, установи его:
- Настроить rclone для работы с Яндекс.Диском: Используя rclone, настрой соединение через WebDAV. Для этого:
- Выполни команду:
- Выбери New remote (новое подключение).
- Дай имя подключению, например, yadisk.
- Когда будет предложено выбрать тип облачного хранилища, введи webdav.
- Для URL используй: https://webdav.yandex.ru
- Для User введи свой логин от Яндекс.Диска.
- Для Password введи свой пароль (или приложение может запросить использование OAuth-ключа).
- Остальные настройки можно оставить по умолчанию.
sudo dnf install rclone
rclone config
Теперь rclone настроен для работы с Яндекс.Диском.
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
.
- После выбора и проверки файла скрипт копирует его на Яндекс.Диск в указанную директорию с помощью
- Окно с результатом:
- Если копирование прошло успешно, выводится сообщение об успешном завершении. В случае ошибки копирования также будет показано сообщение с помощью диалога.
Как использовать:
- Сохрани скрипт в файл, например, yadisk_copy_gui.sh.
- Сделай скрипт исполняемым:
- Запусти его:
chmod +x yadisk_copy_gui.sh
./yadisk_copy_gui.sh
Теперь при запуске скрипта откроется псевдографический интерфейс для выбора файла или каталога, который ты хочешь скопировать на Яндекс.Диск. Это делает процесс более интерактивным и удобным для использования в терминале.