How to install Copy.com on a headless linux
На форуме copy.com есть интересные топик. На вопрос о том, где же документация по command-line интерфейсу, Barracuda Team Members по имени Michael Potter недвусмысленно ответил:
We do not have documentation for this but you can refer ti this link
Ну что ж, как послали, так послали...
В этой заметке мы посмотрим, как установить клиент copy.com
на безголовый линукс сервер, а именно Ubuntu 15.10 Wily x64.
Установка из ppa
Для ubuntu поддерживается ppa-репозиторий, но ничего не мешает скачать архив с офф. сайта и использовать его. Я все же предпочитаю установку из пакетов:
$ sudo apt-add-repository ppa:paolorotolo/copy
$ sudo apt-get update
$ sudo apt-get install copy
Первый запуск
Идем в /opt/copy-client
и наблюдаем там пачку файлов, в числе которых есть три исполняемых, и вот
для чего они нужны (текст, найденый в скачанном с copy.com тарболе):
To use Copy in Linux, install this tarball wherever you like. There are three
binaries available for use, described below.
1. CopyAgent – This is a QT based UI application for the Linux GUI; it acts
as a tray application, just like the Mac and Windows versions.
1.a You can install overlays on certain version of Nautilus, by
running as root ./CopyAgent –installOverlay.
2. CopyConsole – This is a headless version of the Copy app. It can run
in a terminal or as a background process.
2.a This version won't have a login prompt, so if you haven't logged
in before you'll need to provide at minimum a username and Copy
folder location. If a password isn't provided at the command line,
it will be prompted for. Example:
CopyConsole -username=<email> -root=/home/<user>/Copy
2.b If you have previously logged in, either with CopyAgent or
CopyConsole, then no special arguments are required.
2.c For more options, run: CopyCommand -help
3. CopyCmd – This is a tool that provides commandline APIs into various
aspects of the Copy app. You can do cool things like create a link
URL to a file in your account or upload a file directly into
the cloud.
3.a For a full list of commands, run: CopyCmd -help
3.b Several commands require a [path] as an argument. All such paths
must begin with / and are relative to your Copy folder. For
example, if your Copy folder contains a subdirectory called Foo,
and inside that is a file called Bar, then the [path] argument
needed to refer to file Bar would be /Foo/Bar.
То есть, CopyAgent - gui утилита, это не про нас. CopyCmd - выполняет различные команды, например, можно залить файл в облако, или скачать его, установить или убрать оверлейную иконку, обозначающую синхронизированные файлы, а так же фунции отладки и аутентификации.
Нас же интересует команда CopyConsole.
Посмотрим, какую информацию даст хелп от CopyConsole:
$ ./CopyConsole -h
Error: The specified option is not supported
CopyConsole - Run a console-only Copy agent
usage: CopyConsole [ -appdata | -daemonize | -debugOutput | -debugToConsole
| -password | -root | -username ]
Options:
-[ appdata | data ] Location of Copy application data directory
-[ daemonize | daemon ] Daemon mode
-[ debugOutput | debug ] Enable debug message masks
-[ debugToConsole | consoleOutput | console ] Logs debug to output
-[ password | pass | p ] Password for the login
-[ root | r ] Location of Copy root directory
-[ username | user | u ] Login to the cloud as this user
Странно, что утилита не имеет никаких help ключей, но введя неправильный ключ, можно увидеть справку.
Попробуем запустить клиент, указав логин (почту), пароль, и корневую директорию для синхронизации:
$ /opt/copy-client/CopyConsole \
-u=the_mail_you_signed_up_with \
-r=/home/your_linux_username/copy \
-p=the_password_you_signed_up_with
Failed to write status file: Exception - Description: File not \
found (/home/swasher/.copy/status.txt) Original: 25 Mapped: 25 Location: \
Open:/home/jenkins/workspace/Copy_Agent_Linux-1.4/libbrt/Brt/File/YFile.cpp:48
Using profile /home/swasher/.copy/config.ini
User from cmdline <the_mail>
Root from cmdline /home/swasher/Music
Password from cmdline
Starting copy...success
Logged in as user: <the_mail> Copy folder is: '/home/swasher/Сopy'
Press enter to exit
Syncing
Scanning for changes
All files up to date
Отлично! В папке ~/.copy у нас появились разные служебные файлы - настройки, сокет и др., а в папке Copy - синхронизировались файлы из аккаунта Copy. Теперь синхронизация будет продолжаться, пока мы не нажмем Ctrl-C, прервав синхронизацию.
Демон
Осталость сделать так, чтобы наша синхронизация запускалась и работала как демон.
Параметры входа в аккаунт, которые мы указали, сохранятся для текущего юзера в ~/.copy, и будут использованы при следующем запуске. Так демон сможет автоматически логинится.
Утилита CopyConsole
имеет ключ для запуска как демон:
/opt/copy-client/CopyConsole -daemon
и, в принципе, можно запускать ее с этим ключем в каком-нибудь rc.local, но мы пойдем другим путем и создадим сервис Systemd.
Для этого создадим файл /etc/systemd/system/copy-console.service
:
[Unit]
Description=CopyConsole
After=local-fs.target network.target
[Service]
Type=simple
ExecStart=/opt/copy-client/CopyConsole
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
User=swasher
[Install]
WantedBy=multi-user.target
Включаем и запускаем сервис
$ sudo systemctl enable copy-console.service
А затем проверяем его работу
$ sudo systemctl status copy-console.service
● copy-console.service - CopyConsole
Loaded: loaded (/etc/systemd/system/copy-console.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-01-18 10:28:00 EET; 2min 17s ago
Main PID: 8470 (CopyConsole)
CGroup: /system.slice/copy-console.service
└─8470 /opt/copy-client/CopyConsole
Jan 18 10:28:00 nas systemd[1]: Started CopyConsole.
Jan 18 10:28:01 nas CopyConsole[8470]: Using profile /home/swasher/.copy/config.ini
Jan 18 10:28:01 nas CopyConsole[8470]: User from database mr.swasher@gmail.com
Jan 18 10:28:01 nas CopyConsole[8470]: Root from database /home/swasher/Music
Jan 18 10:28:01 nas CopyConsole[8470]: Token from database ATC-cad2e4be7dee80d95eb7e97c13f6bdafc6b5e2ad
Jan 18 10:28:03 nas CopyConsole[8470]: Starting copy...success
Jan 18 10:28:03 nas CopyConsole[8470]: Logged in as user: '<the_mail>' Copy folder is: '/home/swasher/Music'
Jan 18 10:28:03 nas CopyConsole[8470]: Press enter to exit
Если пишет зеленеым Active: active (running)
- все окей, сервис запущен, а если красным Active: failed
,
то танцуем с бубном.
Comments !