有馬総一郎のブログ

(彼氏の事情)

2017年05月05日 19:01:56 JST - 2 minute read - Linux

ownCloudをコマンドで同期する

ownCloudをGUIが使えない環境で使えるのかどうかよく分からなかったのだけど、使えた。しかも、この方法だと常駐されずにコマンドを打つまで同期されないので、人にとってはありがたいかも。

普通にownClound Clinetをインストールする。

wget -nv http://download.opensuse.org/repositories/isv:ownCloud:desktop/Ubuntu_16.04/Release.key -O Release.key
sudo apt-key add - < Release.key
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_16.04/ /' > /etc/apt/sources.list.d/owncloud-client.list"
sudo apt-get update
sudo apt-get install owncloud-client

同期するディクレトリを作成して同期する。コマンドはowncloudcmdと覚えやすい。コマンドowncloudcmdの詳細は Advanced Usage ownCloud Client Manual 2.1.1 documentationにある。

mkdir octopress
owncloudcmd $HOME/octopress https://www.myowncloudinstance.org/owncloud/remote.php/webdav/octopress

何やらinsert文やらが大量に標準出力に表示されて、同期が始まる。

"INSERT OR REPLACE INTO metadata (phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, contentChecksum, contentChecksumTypeId) VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6
OCC::SyncJournalFileRecord::SyncJournalFileRecord(const OCC::SyncFileItem&, const QString&) "/home/arimasou16/octopress/public" Retrieved inode  4503599627762560 (previous item inode:  4503599627762560 )
"INSERT OR REPLACE INTO metadata (phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, contentChecksum, contentChecksumTypeId) VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6
OCC::SyncJournalFileRecord::SyncJournalFileRecord(const OCC::SyncFileItem&, const QString&) "/home/arimasou16/octopress/source" Retrieved inode  2533274790792652 (previous item inode:  2533274790792652 )
"INSERT OR REPLACE INTO metadata (phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, contentChecksum, contentChecksumTypeId) VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6
void OCC::SyncJournalDb::walCheckpoint() took 0 msec
void OCC::SyncJournalDb::commitInternal(const QString&, bool) Transaction commit  "All Finished."
void OCC::SyncJournalDb::close() "/home/arimasou16/octopress/._sync_20e025134602.db"
No database Transaction to commit
CSync run took  156430
virtual OCC::BandwidthManager::~BandwidthManager()
void OCC::SyncEngine::abort() QObject(0x0)
void OCC::SyncJournalDb::close() "/home/arimasou16/octopress/._sync_20e025134602.db"
No database Transaction to commit
arimasou16@UbuntuServer:~/octopress$

その後も、ディレクトリを同期したい場合は、同じコマンドを打てばされる。

必要最低限のコマンドだと、ユーザー名とパスワードを対話式で入力する必要があるので、-u username -p mypasswordで、入力省略することもできる。ユーザー名、パスワードをコマンドに含めたくないならば、

machine www.myowncloudinstance.org
login username
password mypassword

上記内容を記述した~/.netrcというファイルを作成して、コマンドオプションとして-nを付ければユーザー、パスワードを打たなくて済む。machineの項目は必須。

それから、同期処理の詳細を表示させたくなければ-sを付ければいい。なので、~/.netrcを用意しておけば、

owncloudcmd -s -n $HOME/octopress https://www.myowncloudinstance.org/owncloud/remote.php/webdav/octopress

で済むようになる。