Выбрать главу

Следует, однако, отметить, что Google Drive хранит в вашей локальной системе не сами файлы документов, а только ссылки на документы в облаке. Например:

$ cat M3\ Speaker\ Proposals\ \(voting\). gsheet

{"url": "https://docs.google.com/spreadsheet/ccc?key=0Atax7Q4SMjEzdGdxYVVzdXRQ

WVpBUFh1dFpiYlpZS3c&usp=docslist_api", "resource_id": "spreadsheet:0Atax7Q4SMj

EzdGdxYVVzdXRQWVpBUFh1dFpiYlpZS3c"}

Определенно, перед нами не содержимое электронной таблицы.

Немного поиграв с командой curl, вы, возможно, сумели бы написать утилиту для анализа этой метаинформации, но давайте сосредоточимся на чем-нибудь попроще, а именно, напишем сценарий, с помощью которого вы сможете выбирать файлы и копировать их в свою учетную запись Google Drive, как показано в листинге 13.8.

Код

Листинг 13.8. Сценарий syncgdrive

··#!/bin/bash

··# syncgdrive — позволяет указать один или несколько файлов, чтобы

··#·· автоматически скопировать их в вашу папку Google Drive, которая

··#·· синхронизируется с вашей учетной записью в облаке.

··gdrive="$HOME/Google Drive"

··gsync="$gdrive/gsync"

··gapp="Google Drive.app"

··if [$# −eq 0]; then

····echo "Usage: $(basename $0) [file or files to sync]" >&2

····exit 1

··fi

··# Проверить, запущен ли Google Drive? Если нет, запустить.

··if [-z "$(ps −ef | grep "$gapp" | g −v— v grep)"]; then

····echo "Starting up Google Drive daemon…"

····open −a "$gapp"

··fi

··# Теперь проверить наличие папки /gsync.

··if [! -d "$gsync"]; then

····mkdir "$gsync"

····if [$? -ne 0]; then

······echo "$(basename $0): Failed trying to mkdir $gsync" >&2

······exit 1

····fi

··fi

··for name····# Цикл по аргументам сценария.

··do

····echo "Copying file $name to your Google Drive"

····cp −a "$name" "$gdrive/gsync/"

··done

··exit 0

Как это работает

Подобно сценарию № 89 в начале главы, этот сценарий перед копированием файла или файлов в папку Google Drive проверяет, выполняется ли демон службы. Проверку выполняет блок, начинающийся в строке .

Для большей надежности следовало бы проверить код, возвращаемый командой open, но мы оставим это вам, уважаемый читатель, в качестве самостоятельного упражнения, хорошо?

Затем сценарий гарантирует наличие подкаталога gsync в папке Google Drive, создавая его при необходимости, и затем просто копирует туда указанные файлы, используя удобный ключ −a в команде cp, чтобы предотвратить искажение времени создания и последнего изменения.

Запуск сценария

Просто передайте сценарию один или несколько файлов, которые вам хотелось бы синхронизировать с вашей учетной записью Google Drive, и сценарий сделает все необходимое для этого.

Результаты

Это круто, правда. Укажите файл, который нужно скопировать в Google Drive, как показано в листинге 13.9.

Листинг 13.9. Запуск Google Drive и синхронизация файлов с помощью сценария syncgdrive

$ syncgdrive sample.crontab

Starting up Google Drive daemon…

Copying file sample.crontab to your Google Drive

$ syncgdrive ~/Documents/what-to-expect-op-ed.doc

Copying file /Users/taylor/Documents/what-to-expect-op-ed.doc to your Google

Drive

Обратите внимание, что в первом случае был произведен также запуск демона Google Drive. После нескольких секунд ожидания, необходимых на копирование файлов в облачную систему хранения, они появились в веб-интерфейсе Google Drive, как показано на рис. 13.1.

Рис. 13.1. Шаблон файла crontab и офисный документ, синхронизированные с Google Drive, автоматически появились в веб-интерфейсе

Усовершенствование сценария

В описании сценария допущена небольшая некорректность: когда вы указываете файл для синхронизации, сценарий не предохраняет его от рассинхронизации в будущем; он просто копирует файл один раз и все. По-настоящему интересным усовершенствованием стало бы создание более мощной версии этого сценария, которой можно было бы передать файлы для копирования, и которая регулярно проверяла бы их и копировала обновленные версии в каталог gsync.

№ 93. Компьютер сказал…

В состав OS X входит сложная система синтеза речи, которая может голосом сказать, что происходит в вашей системе. Обычно она находится в разделе Accessibility (Универсальный доступ), и вы наверняка оцените способность компьютера вслух сообщать об ошибках или читать файлы.