# Dropboxにcrontabとdropboxdでバックアップをアップロード

**URL:** https://meta.discourse.org/t/upload-backups-to-dropbox-with-crontab-and-dropboxd/176982
**Category:** Sysadmins
**Tags:** how-to
**Created:** [2021 年 1 月 22 日午後 8:59 UTC](https://meta.discourse.org/t/upload-backups-to-dropbox-with-crontab-and-dropboxd/176982 "2021-01-22T20:59:47Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Ivan\_Rapekas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ivan_rapekas/32/248924_2.png) [@Ivan\_Rapekas](https://meta.discourse.org/u/Ivan_Rapekas)
#### Post date: [2021 年 1 月 22 日午後 8:59 UTC](https://meta.discourse.org/t/upload-backups-to-dropbox-with-crontab-and-dropboxd/176982/1 "2021-01-22T20:59:47Z")

</div>

Dropbox には利点があります。システムに新しいバックアップが現れると、すぐに同期します。取引内容は、新しいバックアップをローカルの Dropbox フォルダに配置することです（提供された cron スクリプトを使用）。

**進める前に** 、以下の点を知っておく必要があります：

1. プランで許可されている範囲内で、Dropbox にファイルを保存できます。
2. 無料プランでは最大 3 台のデバイスを Dropbox に接続できます（Android デバイスの場合、この制限は回避可能です）。
3. Linux サーバーで Dropbox を実行する場合、1 つのフォルダのみを同期する必要があります。または、Dropbox は双方向ソリューションであるため、クラウド上のすべてのデータでサーバーを埋め尽くす可能性があります。これはサーバーの容量を消費します。
4. Discourse のバックアップフォルダとローカルの Dropbox バックアップフォルダ間で同期するための追加の rsync スクリプトを作成する必要があります。これにはバックアップ用の **容量が 2 倍** 必要になります。以前は Dropbox がシンボリックリンクを許可していましたが、現在はこの機能は利用できません。
5. バックアップにアクセスするために root 権限は不要ですが、このガイドでは dropbox デーモンを root として実行しています（おそらく安全ではありません。改善への提案を歓迎します）。

**まず** 、Discourse で `/admin/site_settings/category/backups` にてバックアップを設定する必要があります（私のカスタム値は括弧内）。

最大バックアップ数 (3) - Dropbox に保持されるファイル数を管理します  
 バックアップ頻度 (1) - 毎日  
 バックアップ時刻 (3:30 UTC) - デフォルト  
 バックアップ gzip 圧縮レベル (6) - 圧縮速度 (1) かサイズ削減 (9) のどちらかを選択しますが、VPS の場合、長時間の CPU 高負荷によりホストプロバイダがサーバーを再起動する可能性があります

**次に** 、シェルコマンドでサーバーを Dropbox に接続します（ **重要** : サービスを root として実行しているため、このステップでは _root としてログイン_ しています。通常のユーザーで試してみてください）：

```plaintext
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
# .dropbox-dist ディレクトリが作成されます
# dropbox デーモンを実行
sh ~/.dropbox-dist/dropboxd

```

サーバーで初めて Dropbox を使用すると、 **一意のウェブリンク** が表示されます。これをコピーしてウェブブラウザに貼り付け、指示に従ってください。その後、ホームフォルダに Dropbox ディレクトリが作成されます。公式の Dropbox は、デーモンを管理するための [Python スクリプト](https://www.dropbox.com/download?dl=packages/dropbox.py) のダウンロードを推奨していますが、私は使用していません。

デーモンを管理するコマンド：

```plaintext
dropbox status
dropbox start
dropbox stop

```

> **自動起動スクリプトが作成されたか確認してください（クリックして隠されたテキストを展開）：**
>
> ```plaintext
> #cat /etc/systemd/system/dropbox.service
> 
> [Unit]
> Description=Dropbox Service
> After=network.target
> 
> [Service]
> ExecStart=/bin/sh -c '/usr/local/bin/dropbox start'
> ExecStop=/bin/sh -c '/usr/local/bin/dropbox stop'
> PIDFile=/root/.dropbox/dropbox.pid
> User=root
> Group=root
> Type=forking
> Restart=on-failure
> RestartSec=5
> StartLimitInterval=60s
> StartLimitBurst=3
> 
> [Install]
> WantedBy=multi-user.target
> 
> ```

 ![discourse-dropbox](https://global.discourse-cdn.com/meta/original/3X/d/d/dd5ea3dc2beea5ed5673630e8433fcc45642c50e.png)

> Discourse はバックアップファイルを提供し、その数と頻度を管理します。  
> Crontab の rsync タスクが新しいバックアップをローカルの Dropbox フォルダにコピーします。  
> その後、Dropbox が新しいファイルをクラウドにアップロードします。  
> 次の夜に Discourse が古いバックアップファイルを削除すると、rsync も Dropbox からそれを削除します。

**3 番目** 、バックアップ用コピーの Dropbox フォルダを作成します：

```plaintext
mkdir ~/Dropbox/backups

```

**4 番目** 、逆同期用のフォルダを準備します（不要なフォルダの同期を解除）  
例えば、Dropbox フォルダに以下のサブフォルダとファイルがある場合：

```plaintext
backups
books
stuff
logo.png

```

`backups` 以外を除外する必要があります。実際には、このコマンドは除外リストに項目を追加します：

```plaintext
dropbox exclude add "Dropbox/books/"
dropbox exclude add "Dropbox/stuff/"
dropbox exclude add "Dropbox/logo.png"

```

もし誤って `backups` を除外リストに追加してしまった場合は、リストから項目を削除することで同期に戻すことができます：

```plaintext
dropbox exclude remove "Dropbox/backups/"

```

特定のバックアップの現在のステータスは、以下のコマンドで確認できます：

```plaintext
dropbox filestatus Dropbox/backups/niti-2021-01-21-033726-v20201218000001.tar.gz

```

**5 番目** 、ローカル同期とキャッシュのクリア用のスクリプト `/root/rsync.dropbox` を準備します：

```plaintext
#!/bin/sh
rsync -avh --stats --progress --delete /var/discourse/shared/standalone/backups/default/ /root/Dropbox/backups/
rm -rf /root/Dropbox/.dropbox.cache/

```

**6 番目** 、ローカル時間の午前 8 時に crontab にコマンドを追加します：`crontab -e`

```plaintext
0 8 * * * /bin/bash /root/rsync.dropbox

```

UTC 午前 3 時から私のローカル時間午前 8 時までの時間的余裕があります。これにより、Dropbox との同期開始前にバックアップが完了するのに十分な時間があります。

**追伸**  
この設定は半年以上確認していませんでした。現在、`dropbox status` コマンドが以下のメッセージを返していることに気づきました：

```plaintext
You're using an old version of Dropbox. Please update to the latest version to continue using Dropbox.

```

同期は依然として機能しているため、アップグレードは行いません。最後にシンボリックリンクのサポートが失われました。
