UbuntuでOneDriveの大容量フォルダ除外と自動同期を快適にする方法

申し訳ありません、たくさんのデータを扱うときにフォルダを丸ごとダウンロードしてしまうのは本当に大変ですよね。私もUbuntuでOneDriveを同期し始めた頃、最初に数十GBもの動画データが一気に同期されて驚いた経験があります。その後いろいろと調べるうちに、除外設定や自動同期機能をうまく使うとストレスなく作業できるようになることがわかりました。今回は私が試行錯誤しながら得た知識や設定方法を、なるべくわかりやすくご紹介します。

OneDriveをUbuntuで使うための基本概要

UbuntuなどのLinux環境でも、OneDriveを活用すればファイルのバックアップや共同作業を手軽に行えます。仕事やプライベートのデータをクラウドに安全に保管し、どの端末からでもアクセスできるようにしておくと、外出先などでも役立つ場面が増えていきます。ただしWindows版と異なり、Ubuntu環境ではMicrosoft公式のOneDriveクライアントが存在しないため、非公式のクライアントを利用する形となります。

非公式クライアント「abraunegg/onedrive」の存在

非公式ではありますが、多くのUbuntuユーザーが「abraunegg/onedrive」というリポジトリのOneDriveクライアントを活用しています。これは有志が開発・メンテナンスしているソフトウェアで、以下の特徴を持っています。

クラウドとローカルを常に同期

スクリプトやコマンドを実行することで、OneDrive上のファイルとUbuntuマシン上のファイルを双方向で同期します。単なる一方向のバックアップではなく、ローカルで更新されたファイルはクラウド側へ、クラウドで更新されたファイルはローカルへ反映される仕組みです。

細かな除外設定や特定フォルダのみ同期などに対応

skip_dirやsync_listなどを駆使すれば、「このディレクトリは同期したくない」「この拡張子のファイルは対象外にしたい」というような要望に柔軟に応えられるのが大きな利点です。これがデフォルト設定だとフォルダ丸ごと同期されてしまうため、ストレージを圧迫する原因になりがちですが、自由度の高い設定が可能になっています。

私の場合は初期設定のままで同期を開始してしまったため、大量の動画や写真ファイルが一度にローカルへ流れ込みました。ネット回線の速度が思った以上に落ちてしまい、結局翌朝になるまで作業ができなかったのが苦い思い出です。

特定ディレクトリの除外方法

OneDriveクライアントを導入しただけだと、すべてのファイルやフォルダが同期対象になります。サイズの大きいフォルダを除外したい場合、例えばDocuments内のVideosフォルダだけ除外したいときには、設定ファイルを手動で編集する必要があります。

~/.config/onedrive/config と ~/.config/onedrive/sync_list の使い分け

abraunegg/onedriveでは、主に以下2つのファイルを使って同期設定を管理できます。

configファイル

基本的な動作パラメータ(monitorモードを有効にするか、log出力先、Office365対応など)を調整します。ここでskip_dirを利用すると、指定したディレクトリ名が完全にスキップ対象になります。

sync_listファイル

同期したい(あるいは同期したくない)ファイルやディレクトリを明示的に列挙できます。特定のフォルダやファイルパスだけをリストしておき、それ以外は同期しない、という設定も可能です。

# 例:~/.config/onedrive/config
# フォルダをスキップする設定例
skip_dir = "Documents/Videos"
skip_file = "~*"

この例では、Documents直下のVideosという名前のフォルダが同期対象から除外され、チルダ(~)で始まるファイルもスキップされます。skip_dirに複数のディレクトリ名を列挙したい場合は、改行などを使って追加で記載できます。

sync_listファイルの設定例

「どうしてもDocuments/Videosは同期したくないけど、他のフォルダ(例えばDocuments/Projectsなど)は同期したい」といった場合は、sync_listを活用する方法がわかりやすいです。sync_listに明示的に同期したいディレクトリを書いておくと、そこに書かれていないものは同期されません。

# 例:~/.config/onedrive/sync_list
Documents
Music
Pictures

このように書くと、DocumentsとMusicとPicturesフォルダだけが同期対象となり、Videosフォルダは記述がないため除外されます。
configファイル側でも「sync_listがある場合はsync_listを優先する設定」をONにしておく必要があります。

設定ファイルのサンプル構成

次のような構成でファイルを保存すると管理がしやすいです。

ファイル名 役割
~/.config/onedrive/config 基本設定。monitorモードを有効にするか、ログの出力先などを指定
~/.config/onedrive/sync_list 同期したいディレクトリとファイルを明示。ここにないフォルダは同期されない

skip_dirやsync_listを活用すれば、大容量フォルダを誤ってダウンロードするリスクを減らせます。

自動的に同期を走らせる方法

OneDriveを都度手動で同期するのは手間がかかります。自動同期を設定しておけば、ローカルやクラウドの更新があったときに自動で反映されるので、作業効率がぐっと上がります。

onedrive –monitor オプションによるリアルタイム監視

Linux版OneDriveクライアントの便利な機能として、monitorモードがあります。ターミナルで以下のように実行すると、そのままプロセスが走り続け、ファイル変更を検知してクラウドへアップロードしたり、クラウド側の更新をダウンロードしてくれます。

onedrive --monitor

このモニターを常駐させておくことで、ほぼリアルタイムに同期されるようになります。
ただしターミナルを閉じるとプロセスも終了してしまいますので、バックグラウンドで常駐させたい場合は、Systemdやscreen、tmuxなどを使って実行するのがおすすめです。

私の場合は、Ubuntuの起動と同時にこのmonitorモードが立ち上がるようにSystemdのサービスを作成しました。おかげで、端末を起動するたびにワンクリックで同期が走るのはとても快適です。

Systemdサービスの作成で自動スタート

UbuntuなどのSystemd対応OSであれば、起動時に自動でonedriveのmonitorモードが立ち上がるよう設定できます。
サービスファイルを作成して配置するだけで、起動時に自動で同期を開始してくれるので、一度設定しておけば毎回ターミナルからコマンドを打つ必要がありません。

サービスファイル例

以下はユーザーユニットとして使うケースの例です。/etc/systemd/systemではなく、~/.config/systemd/user/onedrive.service のような場所にファイルを置くと、自分のユーザー権限で起動できます。

[Unit]
Description=OneDrive Monitor Service

[Service]
ExecStart=/usr/bin/onedrive --monitor
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

このファイルを保存後、以下のコマンドを実行すれば自動起動を有効にできます。

systemctl --user enable onedrive.service
systemctl --user start onedrive.service

これでPCを立ち上げるたびにOneDriveクライアントがmonitorモードで起動し、変更を検知して即座に同期が行われるようになります。もちろん、skip_dirなどの設定がある場合はそれらが反映されるため、動画フォルダのような大容量ディレクトリを除外したままで自動同期が進みます。

cronによる定期実行の活用

リアルタイム同期まで不要なケースでは、cronを使って1日に1回、あるいは数時間に1回だけonedrive –synchronizeコマンドを実行する方法もあります。サーバー用途や、容量制限が気になる環境では定期実行も選択肢になります。例えば以下のようにcron設定すると、毎日深夜3時に同期を行います。

0 3 * * * /usr/bin/onedrive --synchronize >> /home/user/onedrive.log 2>&1

ただしcronの場合は実行したタイミングでしか同期されないため、リアルタイム性が低くなります。それでも、常に大容量のフォルダを同期させるわけではなく、ある程度の更新だけ取りこぼさなければOKという運用形態であれば十分です。

実際に運用して感じるメリットと注意点

フォルダ除外や自動同期を活用すると、OneDriveとUbuntuの連携はとても快適になります。しかし実際に使うときには、思わぬ落とし穴を感じることもあります。

大容量のフォルダが同期対象外になるだけで、ネット回線やディスク使用量の負担が格段に減ります。必要なファイルだけクラウドと同期する形が理想的です。

やや複雑な設定ファイルの管理が必要になります。複数のフォルダを除外したり、一部ファイルだけを同期から外す場合は、sync_listとconfigの整合性をとるのに注意が必要です。

トラブルシューティングのポイント

使い始めてしばらくすると、「除外したはずのフォルダがまたダウンロードされている」「monitorモードが何かの拍子で止まっていた」などの問題にぶつかる可能性があります。そんなときに確認すべきポイントをいくつかご紹介します。

設定ファイルの更新後に再起動が必要

skip_dirやsync_listを編集しただけでは、monitorモードがすでに走っている場合は反映されません。設定を変更したら、一度onedriveプロセスを停止し、再度起動させることが大切です。Systemdを使っている場合はsystemctlコマンドで再起動してください。

ディレクトリ名やパス指定のミス

フォルダ名が完全一致しないと除外してくれません。絶対パスと相対パスの指定を取り違えているかもしれませんので、トラブル時にはフォルダパスを正確に確認してください。

私も初めは「Documents/Videos」を「Document/Videos」と書き間違えていて、何度設定してもうまく除外されないことがありました。スペルミスは意外に見逃しやすいです。

まとめ

UbuntuでOneDriveを利用する際、特定ディレクトリを除外して常に最新状態を保つためには、Linux版OneDriveクライアントのskip_dirやsync_listを活用するのが効果的です。自動同期を設定すれば、都度コマンドを実行する手間も省けます。自分の運用スタイルに合わせてリアルタイム監視か定期実行かを選択し、設定ファイルをきちんと管理することで、クラウドとローカルのデータをスムーズに同期できます。

もし大容量フォルダを誤って同期してしまい、ディスクスペース不足やネット回線の速度低下に悩まされた方は、ぜひ今回ご紹介した設定方法を試してみてください。最初は設定ファイルを触るのに少し緊張しますが、覚えてしまえば非常に便利で、快適なUbuntuライフを送るうえで大きな助けになるはずです。

コメント

コメントする