iPhoneの写真を自分のストレージへバックアップ

外部ストレージ、SMB、WebDAV、SFTP、S3互換バケット、OneDrive、Dropbox、Google Driveへのバックアップに対応。
GitHubでオープンソース公開。

かんたんに使える

  1. 1

    ノードを選択

    外部ストレージ、SMB、WebDAV、SFTP、S3互換バケット、OneDrive、Dropbox、Google Drive。

  2. 2

    月にチェック

    バックアップ、ダウンロード、補完を月ごとに処理。

  3. 3

    実行

    リモートインデックスを同期し、必要に応じて一時停止・再開。

オープンソースで確認可能

プライバシーは所有権と同じくらい重要だと考えています。

価格

一回限りの購入。サブスクリプションではありません。

Item 無料版 Pro
価格 ¥1,250 コーヒー約2杯
フォアグラウンドバックアップ
ノード 1 無制限
ドロップモードの送信上限 3 項目 無制限
バックグラウンド自動バックアップ
PiP 進捗
集中モード

FAQ

アプリはオープンソースなのに、なぜアプリ内購入があるのですか?

アプリはオープンソースで、Xcodeで直接ビルドできます。アプリ内購入は継続的な開発、メンテナンス、アップデートを支え、ユーザーに長く提供し続けるためのものです。

アプリ内購入は継続課金ですか?永続的に使えますか?

継続課金ではありません。Pro は一回限りの購入で、購入後はずっと利用できます。新しいデバイスでは「購入を復元」から権利を復元できます。

ノードとは何ですか?

ノードはアプリに追加するストレージ接続です。外部ストレージ、SMB、WebDAV、SFTP、S3互換バケット、OneDrive、Dropbox、Google Driveに対応しています。

ノードのアカウント、パスワード、鍵はどこに保存されますか?

ノードに必要な認証情報は iOS Keychain に保存され、診断ログには書き込まれません。OneDrive のトークンは MSAL が管理します。Dropbox と Google Drive ではリフレッシュトークンを Keychain に保存し、短期アクセストークンはメモリ内にのみ保持します。

バックアップ、ダウンロード、補完とは何ですか?

「バックアップ」はこのデバイスの写真とビデオの原本を現在のノードへ書き込みます。「ダウンロード」はノードからバックアップ済みの項目を取り戻して「写真」に読み込みます。「補完」は先にバックアップし、その後にダウンロードします。ノードにないローカル項目を送信してから、ローカルにないリモート項目を「写真」へ戻します。

Live Photos をバックアップして復元できますか?

はい。スイカバックアップは Live Photos の静止画とペアの動画をリソースとして保存し、復元時はシステムの「写真」読み込み経路を使います。結果は必要なリソースがそろっているかどうかに左右されます。

バックアップで画質が落ちたり、撮影日時や EXIF 情報が失われたりしますか?

バックアップはプレビュー書き出しではなく、元のリソースを基準に扱います。撮影日時や EXIF などの埋め込みメタデータは、それらのリソースと iOS の「写真」読み込み処理に従います。

バックアップ後にローカルとリモートの件数や容量が一致しないのはなぜですか?

これは想定どおりで、写真やビデオが失われたという意味ではありません。スイカバックアップは月ごとにバックアップし、内容ハッシュで重複を判定します。同じ月に同一の原本内容が複数回現れた場合、リモートには実体ファイルを1つだけ保存し、バックアップマニフェストで各項目との関連を記録します。そのため、リモートのファイル数や使用容量はローカルの合計より少なく見えることがあります。少量のマニフェスト/インデックスファイルやストレージサービスごとの集計方法によっても、容量表示が完全には一致しない場合があります。

iCloud写真を使っていても、オリジナル写真をバックアップできますか?

はい。アプリの設定で「iCloud 写真アクセスを許可」をオンにすると、必要に応じて iCloud のオリジナルを取得できます。

外部ストレージに書き込めないのはなぜですか?

外部ストレージの形式と iOS Files のアクセス状態を確認してください。詳しくはApple サポートを参照してください。

問題が起きたらどう報告すればよいですか?

メールでお問い合わせください。連絡先はお問い合わせをご覧ください。可能であれば、エクスポートしたログも添付してください。

仕様

外部ストレージ対応

外部ボリューム

種類 iOS「ファイル」経由のローカル/外部ファイルシステム
認証 iOS security-scoped access
利用先 外部ドライブと互換性のあるファイルプロバイダ
容量 プロバイダが公開する場合に空き容量/総容量を読み取り
制限 利用可否は、iOS が選択したボリュームまたはプロバイダへのアクセスを維持できるかに依存します

プロトコル対応

SMB

プロトコル SMB 2 / SMB 3
認証 ユーザー名とパスワード
ドメイン 任意のドメインまたはワークグループ
非対応 SMB1

WebDAV

プロトコル HTTP / HTTPS 上の WebDAV
認証 Basic認証
HTTP 対応(ローカルネットワークのみ)
HTTPS 対応
使用メソッド PROPFIND, PUT, GET, DELETE, MKCOL, MOVE, COPY
メタデータ PROPPATCH による変更時刻更新をベストエフォートで実行
非対応 OAuth、Digest認証、クライアント証明書

SFTP

プロトコル SSH 上の SFTP
認証 パスワードまたは OpenSSH 秘密鍵
秘密鍵 OpenSSH Ed25519 と RSA 秘密鍵
パスフレーズ 対応
ホストキー信頼 SHA256 ホストキー指紋のピン留め
鍵交換 curve25519-sha256, [email protected], ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521
互換 KEX リトライ diffie-hellman-group14-sha1, diffie-hellman-group14-sha256
ホストキー ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521
互換ホストキーリトライ ssh-rsa
暗号 [email protected], [email protected]
互換暗号リトライ aes128-ctr
非対応 ECDSA秘密鍵ログイン、CBCのみのサーバー、3DESのみのサーバー、diffie-hellman-group1のみのサーバー

S3互換

プロトコル S3互換 API
署名 AWS Signature Version 4
認証 Access Key ID と Secret Access Key
エンドポイント カスタム HTTP / HTTPS エンドポイント
HTTP 対応(ローカルネットワークのみ)
HTTPS 対応
バケット指定 パススタイルと仮想ホスト形式
リージョン 手動入力。一般的なプロバイダは推定
一覧取得 ListObjectsV2
アップロード 単一パートアップロードとマルチパートアップロード
コピー サーバーサイドコピーとマルチパートコピー

OneDrive

プロトコル Microsoft Graph API
認証 Microsoftでサインイン(MSAL)
アカウント種類 OneDrive Personal
権限スコープ Files.ReadWrite.AppFolder
Appフォルダ バックアップは Watermelon Backup の App フォルダに保存され、アプリ内では /Apps/Watermelon Backup と表示されます。その外のファイルにはアクセスできません。
一覧取得 Microsoft Graph childrenのページング一覧取得
アップロード 10 MiB未満は直接アップロード、大きいファイルは再開可能なアップロードセッションを使用
トークン管理 アカウント識別情報はKeychainに保存され、アクセス/更新トークンはMSALが管理します。
非対応 OneDrive for Business、SharePoint ベースのドライブ
制限 利用可否はMicrosoftアカウントの状態、容量、スロットリング、ネットワーク接続に依存します。

Dropbox

プロトコル Dropbox API v2
認証 OAuth 2.0 PKCEでDropboxにサインイン
アカウント種類 Appフォルダアクセス付きのDropboxアカウント
権限スコープ account_info.read, files.metadata.read, files.content.read, files.content.write
Appフォルダ バックアップは Watermelon Backup の App フォルダに保存され、アプリ内では /Apps/Watermelon Backup と表示されます。その外のファイルにはアクセスできません。
一覧取得 Dropbox list_folder とcursorページングで一覧取得
アップロード 64 MiB以下は直接アップロードし、大きなファイルは8 MiBチャンクの順次アップロードセッションを使います
ダウンロード Dropbox content download API
メタデータ Dropbox content_hashでリモートファイルを検証
トークン管理 リフレッシュトークンは Keychain に保存され、保存済みアカウント ID でアカウントを確認し、短期アクセストークンはメモリ内にのみ保持されます。
制限 利用可否はDropboxの認可、容量、レート制限、アカウント状態、ネットワーク接続に依存します。

Google Drive

プロトコル Google Drive API v3
認証 OAuth 2.0 PKCE を使って Google でサインイン
アカウント種類 Google Drive が有効な Google アカウント
OAuth クライアント ユーザーが作成した com.zizicici.watermelon 用 iOS OAuth クライアント ID。同じリポジトリへ戻るには、同じ Google アカウントで再利用します。
権限スコープ openid, email / https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/drive.file, https://www.googleapis.com/auth/drive.appdata
Appフォルダ バックアップはマイドライブ内の Watermelon Backup フォルダに保存されます。表示できるのは、この OAuth アプリが作成したファイルに限られます。
ロックデータ 非表示のロック制御レコードは Drive App Data に保存されます。
一覧取得 Google Drive files.list と nextPageToken によるページング
アップロード 5 MiB までは multipart upload、それ以上は 8 MiB チャンクの resumable upload
ダウンロード alt=media を使う Google Drive メディアダウンロード
メタデータ md5Checksum と modifiedTime メタデータを使用
トークン管理 リフレッシュトークンは Keychain に保存され、保存済みアカウント識別子でアカウントを確認し、短期アクセストークンはメモリ内にのみ保持します。
非対応 ドライブ全体へのアクセス、サービスアカウント、APIキー、クライアントシークレット、App Check の強制
制限 利用可否はユーザーの Google Cloud OAuth 設定、Drive API、OAuth の公開ステータス、容量、レート制限、アカウント状態、ネットワーク接続に依存します。

サードパーティライブラリ

iOSアプリの依存関係

Firebase Analytics Without Ad ID Support IDFAを使わないアプリ状態分析
Firebase Crashlytics クラッシュレポートと信頼性診断
Microsoft Authentication Library (MSAL) OneDriveのMicrosoftアカウントサインインとトークンキャッシュ
AMSMB2 (fork) SMB接続、共有の閲覧、SMBファイル操作
Citadel (fork) SSH 上の SFTP、ホストキー指紋処理、SFTPファイル操作
WebRTC (fork) Link のピア接続と Data Channel 転送
GRDB ローカル SQLite データベース、バックアップインデックス、manifest、キャッシュ検証
Kingfisher 写真画面の画像読み込みとローカル UI キャッシュ
SnapKit インターフェイスレイアウト
MarqueeLabel スクロールテキストラベル

バックアップを始めよう

無料で入手