Для небольшого проекта мне пришлось взаимодействовать с API Dropbox и мне нужно было загрузить некоторые файлы, когда они были помещены в специальную папку. К сожалению, не все языки программирования поддерживаются SDK, но я покажу вам, как легко создать простой сценарий Bash, который можно запускать как демон cron. В итоге у вас будет синхронизация между локальным каталогом и каталогом Dropbox.

Первое, с чего вам следует начать, - это проверить документацию Dropbox API. Здесь вы уже можете увидеть, какие языки программирования поддерживаются. К сожалению, здесь нет PHP SDK, который я бы предпочел, но вы можете полностью отказаться от HTTP-пути.

Чтобы иметь возможность работать с Dropbox API, вам необходимо иметь учетную запись Dropbox и приложение Dropbox. Если вы вошли в систему, вы можете создать приложение Dropbox по этой ссылке: https://www.dropbox.com/developers/apps/create

Теперь выберите Dropbox API, полный доступ и дайте ему уникальное имя.

После создания приложения мы можем приступить к проверке документации. На следующей странице вы получите обзор всех конечных точек HTTP и их соответствующих функций: https://www.dropbox.com/developers/documentation/http/documentation

Проверьте это и найдите конечную точку создания папки. Вам нужно выбрать свое приложение, и вы получите полный рабочий пример curl, который вы можете просто добавить в свой терминал, и он будет работать.

Следующим шагом является установка программы curl, если она недоступна, и кодирование сценария Bash для синхронизации файлов из папки. В большинстве современных ОС curl уже предустановлен. Если нет, проверьте эту ссылку: https://curl.haxx.se/

Итак, давайте продолжим сценарий Bash:

Сценарий начинается с классической нотации Shebang и продолжается с двумя постоянными значениями, которые вам необходимо настроить в зависимости от вашего приложения Dropbox. В строке 6 мы определяем переменную, которая принимает имя файла, переданное в сценарий, который необходимо синхронизировать. Имя файла - это полный путь, поэтому нам нужно определить базовое имя, чтобы построить новый путь в предстоящих вызовах API Dropbox. Затем мы проверяем, существует ли еще переданный файл, чтобы мы могли решить, нужно ли нам загрузить или удалить файл удаленно.

Прежде чем вы сможете использовать свой сценарий Bash, вам необходимо сделать его исполняемым с помощью:

chmod +x sync.sh

И вот спусковой крючок! Простой инструмент для синхронизации вашей папки - это команда fswatch. Это монитор изменения файлов, который работает в Linux, OSX и Windows. Для получения дополнительной информации об установке и прочем, пожалуйста, проверьте репозиторий GitHub: https://github.com/emcrisostomo/fswatch

После установки filewatcher вы можете запустить его в Bash следующим образом:

fswatch --event Created --event Removed folderName | (while read x; do echo $x | xargs bash ./sync.sh; done)

Это запустит ваш сценарий sync.sh при добавлении или удалении файлов. В цикле после первого канала мы запускаем сценарий sync.sh для каждого файла, который получает уведомление. И вот конечный результат в действии:

Вау! Простая синхронизация Dropbox с небольшим скриптом Bash практически мгновенно. Поздравляем !!!