先日「フォルダまたはファイルを定期的に自動バックアップする…」といったご質問を頂き、これは面白そうだ!楽しそうだ!…ということで、ちょこっとやってみました!
今回はゲームなどのアプリデータや設定ファイルなどを対象に、指定した曜日・時間に自動でバックアップをさせる方法を試してみたいと思います。
自動バックアップ
今回の目的は、アプリデータなど指定したフォルダ・ファイルを、特定の曜日・時間に、自動的にバックアップ(別のフォルダへコピー)させる事とします。
ちなみに、実行させるとこの様に指定した日時通りにバックアップ&圧縮が行われ、一箇所にまとめて保存されます。
Activatorのスケジュール機能
まず、特定の曜日・時間にバックアップを実行させるにはいくつか方法があるのですが、今回は設定も簡単なActivatorの「スケジュール」機能を使用していきます。
これは曜日と時間を設定することで、その日時にActivatorアクションを実行させることが出来るものです。
例えば、毎週金曜日の0時01分にバックアップを実行…なんて事も。もちろん、毎日や複数の曜日…も可能。
シェルスクリプトでバックアップ
ファイルをバックアップさせる…なんてアクションはありませんので、バックアップ作業自体はコマンドをまとめたシェルスクリプトにて実行させることにします。
ただし、今回の方法は簡単にするため&私の知識的な問題で簡易的な物になっています。そのため、root権限のファイルはバックアップ対象外となります。
① シェルスクリプトを用意
まずは、バックアップ用シェルスクリプトから用意していきましょう。
下記のスクリプトが、私が使ったものです。こちらをコピーしたテキストファイルを作成、「bak.sh」などのファイル名で適当な場所に保存して使います。(/var/mobile/あたりに保存すると分かりやすいかも?)
赤文字で書かれている2箇所が、編集ポイント。
#!/bin/sh # 年-月-日_時-分(バックアップ日時) BTIME=`date +"%F_%H-%M"` # バックアップの保存フォルダ BDIR="/var/mobile/Backup/" # バックアップ対象のファイル&フォルダ OBDIR=" /var/mobile/Documents/ " # バックアップの保存フォルダを作成(なければ) mkdir -p ${BDIR} # バックアップ tar zcvf ${BDIR}/${BTIME}.tar.gz ${OBDIR} >/dev/null 2>&1
1-1 バックアップの保存先
BDIRに続く「/var/mobile/Backup/」がバックアップしたファイルの保存先となります。別の場所に保存したい場合は、ここを編集してください。
# バックアップの保存フォルダ BDIR="/var/mobile/Backup/"
1-2 バックアップ対象
ここにはバックアップしたいフォルダ・ファイルを記述していきます。下記の場合は「/var/mobile/Documents/」フォルダが対象となっている状態。
# バックアップ対象のファイル&フォルダ OBDIR=" /var/mobile/Documents/ "
複数のフォルダやファイルを記述することが可能で、その場合は以下のように記述していきます。アプリデータに関しては、DocumentsとLibraryの全てをバックアップしておくと…いいかも?
# バックアップ対象のファイル&フォルダ OBDIR=" /var/mobile/Documents/Hato.png /var/mobile/Library/Preferences/ /var/mobile/Containers/Data/Application/A8DA99F1-027B-4592-B9C1-EEDE3EE8E5B9/Dosuments/ /var/mobile/Containers/Data/Application/A8DA99F1-027B-4592-B9C1-EEDE3EE8E5B9/Library/ "
② Activatorの設定
前項で作成したシェルスクリプト(bak.sh)を、Activatorから実行出来るようにしましょう。(ちなみに、通常のジェスチャーで実行させることも可)
2-1 スケジュールの作成
指定した曜日・時間に実行させるため、スケジュールイベントの作成を行っていきます。
ジェスチャーリストの画面右上「Build」をタップ、続いて『Scheduled』を選択してください。
スケジュールイベントはアクションを実行する【曜日】と【時間】を設定し、作成します。実行したい曜日と、その時間を設定して「保存」を行いましょう。
これでスケジュールイベントがジェスチャーリストに追加されます。
2-2 コマンドアクションの作成
続いてシェルスクリプトを実行させるアクションを作成していきます。
アクション選択画面を開き右上「Build」をタップ、続いて『Run Command』を選択してください。
『Title』には適当なアクション名、『Command』にはシェルスクリプトを実行するコマンドを入力し、右上「保存」でアクションを追加します。
コマンドですが、シェルスクリプト(bak.sh)を「/var/mobile/」に保存している場合は以下のようになります。シェルスクリプトの保存先・ファイル名により赤文字部分を変更してください。
sh /var/mobile/bak.sh
2-3 アクションを割り当てる
これで準備は整いましたので、あとは作成したスケジュールイベントにバックアップアクションを割り当ててください。
ちなみに、エラー確認のため適当なアクションに割り当てて使ってみるのもオススメ。バックアップファイルが作成されなければ、どこかにミスがあります。
〆
かなり簡易的な物で、バックアップ対象の指定なども不便だったりするのですが、ここから応用して色々と遊んで行くことが出来るかも…ですね!
ちなみに、リセマラ的なあれにも応用できるので、その辺り目当てな方もいじってみると楽しいかも?
私はiTunesでもiCloudでもバックアップをしていないので、今後はこちらでバックアップ対象を増やす、Dropboxへの自動送信…あたりを挑戦しつつ実用化できればなぁ…なんて思っていたり!
コメント
SUGEEEEEEEEEEEEEEEEEEEEE
Activaotr…?
(´・ω・`)そんなミスなど、なかったのです。なにかの、見間違えなのです。
wifi環境下でNASとかのSMBのmountってできるんかな?
ばっくあっぷ先をNASに指定したいわん
Linux とかだと mount.cifs (mount -t cifs)を使えるようにすれば CIFS 経由で出来るんですが、iOS は追っかけた事がありません。rsync の方が手軽そうですね。お恥ずかしいことですが、そもそも私は、脱獄環境のバックアップに慣れてませんので、OBDIR= の指定先をどうするべきか、理解出来てないんです。シェルは自由に書けるんですが・・・
全くわからない
俺には無理だぁーー
> ばっくあっぷ先をNASに指定したいわん
試したことないですが、smbclientがiphoneで機能するのであれば可能ではないかと思います。
ちなみに自分はrsyncでiphone→NASでやってます。
iphone側のシェルで6時間毎に実行しWIFI時のみバックアップするようにしています。
これの続きもどうなったか是非待ってます!
まだ試してないけど、root権限のファイルをバックアップする方法もあるのかな?
それさえ出来ればバックアップ環境は完璧なのだけど…
1-2 アプリデータに関しては…の後がDosumentsになっております…!
Sudo使ったらできるかもね〜
自動バックアップだったsudoers弄らないとだけど
返信先間違えた。
(´;・;ω;・)み…みまちがえじゃないですかね…私がミスするなんて……ちょっと治してきます………
わざわざ記事にして頂いてありがとうございます
記事通りにやったところ無事実行できました。大変有難うございました。
Dropboxを使うメリットってなにがあります?他と比べて。
iFileから覗けるから便利かなーと個人的には思ってる
dropbox_uploaderでスクリプトからはアップできるけどrootログインしないと失敗するのよね
Sudoも失敗してた気がする
sudoインストールすればええやん
FileのURLを発行できるのが良い
これでバックアップしたデータを、復元後にリストアする際はどうしたら良いでしょうか。一つずつ手で戻す?