質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.09%

rsyncコマンド+daily.localでのバックアップ作成について

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 114

Q-tip

score 13

rsyncコマンドにて特定のディレクトリを作成したバックアップ用ディレクトリへ
一日単位でバックアップ保存したいと思い、設定し、問題なく動作することが確認できたのですが、

保存したいディレクトリやファイル毎にトリガーの時間を細かく分けたいと思っております。

com.apple.periodic-daily.plist内にて
現在は86400秒(24H)設定としておりますので、前述の一つだけ作成した
バックアップ処理が適応対象となりますが、

その他に2日毎にバックアップを取りたい場合や数十分毎にバックアップを取りたいディレクトリなどを
それぞれ分けながら保存する処理などは可能なのでしょうか。

具体的な状況の記述を忘れていたので書いていきます

//imgディレクトリをBackupディレクトリへバックアップ設定
1.rsync --delete -avE img Backup/

//daily.localの1行目にトリガー設定を記述

2.sudo vim /etc/daily.localにて以下を記述
rsync -aE --delete /Users/admin/Desktop/img /Users/admin/Desktop/Backup/

//動作の確認
3.sudo periodic daily


助言などいただけましたら嬉しく思います。
必要情報やわかりにくい点などあればご指摘いただければと思います。

よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hidezzz

    2020/06/19 23:58 編集

    ディレクトリごとにバックアップ間隔を変えたいのならば、そのディレクトリごとにrsyncを使ったバックアップスクリプトとそれを起動するためのcron設定をそれぞれ独立で用意するのが単純な解決方法となると思いますが、そうでなく統合で扱いたいような何らかの理由があったりしますか?
    また、もし統合のような形でバックアップを取る場合、バックアップ先の構造はどのようなものを想定していますか?(数十分、1日,2日単位でバックアップする場合、2日に1回は完全な(数十分+1日分+2日分)バックアップ、1日に1回は数十分+1日分のバックアップ、数十分に1回の数十分のバックアップ分だけが含まれるディレクトリがたくさん出来るというような構成になるのでしょうか?)

    キャンセル

  • Q-tip

    2020/06/20 01:29

    ご回答のほど、ありがとうございます!

    バックアップに関しては統合できれば一番理想的だと思いますが、理由としては単に一つのディレクトリに格納されている方が見やすい程度ですが、目的としては弱いかもしれません...!

    バックアップ目的は業務上などではなく、あくまで自身のファイルやimgなどをバックアップ処理したいと思っております。主眼はプログラミングとして、こちらの処理を覚えたい方が強いです。

    ディレクトリ毎にバックアップスクリプトが必要とのことですが、現在、daily.localは一つしか存在しないみたいなのですが、その場合は同じようにdaily.localを複数作成し、それぞれ
    rsync --delete -avE バックアップ元ディレクトリ バックアップ先ディレクトリ/
    のように記述し、

    さらに、トリガー条件ようのcom.apple.periodic-daily.plistも同じ数作成し、条件を変更していくような形になるのでしょうか。

    恐縮なのですが、文末のあたり理解が追いつけませんでした。

    試験的には3つのディレクトリを対象に

    Aディレクトリ = 数十分に一度バックアップ
    Bディレクトリ = 1時間に一度バックアップ
    Cディレクトリ = 二日に一度バックアップ

    で設定していきたいと思っております。

    一日に一度のバックアップはひとまず作成できたので除外しております。
    自分でも調べてみます。

    キャンセル

回答 1

0

「そのディレクトリごとにrsyncを使ったバックアップスクリプトとそれを起動するためのcron設定をそれぞれ独立で用意する」という方向で行くということですね。そのやり方が単純で良いと思います。

ちなみにもしバックアップ対象のバックアップ間隔を全体一括で(数十分とか)短くしすぎると、バックアップが累積することによって専有する容量が大きくなりすぎるという理由だったとしたら、(ディレクトリごとにバックアップ間隔を別々に設定することで専有容量を軽減したいという理由だったとしたら)、rsyncの「--link-dest」オプションを使うという方向でバックアップ専有容量の低減が出来る可能性があるということを提案しようと思っていました。

さらに、トリガー条件ようのcom.apple.periodic-daily.plistも同じ数作成し、条件を変更していくような形になるのでしょうか。

UNIX/Linuxでは「cron」という分単位で指定した起動時刻に指定したコマンドを実行させる仕組みがあります。
Macで使えるかはよく分かってないのでMacの流儀に合っているのかはわからないのですが、使えるのならばcronに登録すれば良いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/20 14:54

    ありがとうございます!なるほどです。

    macにおいてはcronやanacronのようなもの、サービス管理等は全てlaunchdという一括管理になっているみたいです。詳しくはわからないのですが.....

    とりあえずは助言いただいたようにそれぞれ独立設計で作成していくつもりなのですが、
    問題としては現在、前述のバックアップスクリプトとcron設定ファイルが以下

    [cron設定ファイル]

    /System/Library/LaunchDaemons/com.apple.periodic-daily

    *その他にもcom.apple.periodic-weeklyやcom.apple.periodic-monthlyも週、月ごとに用意されている模様です。

    [バックアップスクリプト]
    /etc/daily.local

    -中身-
    -aE --delete /Users/admin/Desktop/img /Users/admin/Desktop/Backup/

    なのですが、現在は上記設定にて問題なく動きますが、
    独立としてあと2つほど追加する場合は同じ名称のものを用意するのか、名称変更するのかが不明でした。

    参考書には
    「自分自身で定期的に実行するスクリプトを用意したい場合は、/etc/daily.local,/etc/weekly.local,
    /etc/monthly.localといった名前でスクリプトファイルを作成します」

    とありましたが、そもそものdaily.localはデフォルトでひとつ作られていたので、今回ひとつぶんのバックアップ処理は完成しましたが、後続のバックアップ処理用ファイルはどのような名称で作成していくのか......

    cron設定ファイルに関しても同じ名称なのか、また週間や月刊ではなく、全てが数時間以内で時間に差異のあるバックアップ方式にしたい場合はweeklyやmonthlyを使わず、dailyを3つ用意するべきなのか。もしくは既存のweeklyの記述を変えるべきか.....

    よくわからない表記で以下の文も載っていて

    「/etc/periodic/daily内に999.localがあり、こちらのファイルでは/etc/daily.localが存在していれば
    それを呼び出すように設定されている」

    とのことでしたが、同じ名称でファイルを作った場合はバックアップスクリプトはコピー元などが記載されているので判別がつくとしても、cron設定はなぜ対象ディレクトリ毎に判別できるか不明です。

    少し気になったのはcron設定のファイル内に

    <array>
    <string>/usr/libexec/periodic-wrapper</string>
    <string>daily</string>
    </array>

    という表記があり、string2行目が引数と書かれていたので、もしかすると
    OO.localというファイルのOOにてcron設定ファイル内の引数箇所との紐付けが行われているのかもしれません。

    色々と試してみたいと思います。

    キャンセル

  • 2020/06/20 17:26 編集

    Macの事情を知らないまま回答を続けるのもどうかと思いますが、とりあえず続けます。(Mac知ってるひとが来るまで…)。ベースになってるFreeBSDの場合はこうなってたという記憶を元に書いているのでMacには適用できないことがあるかもしれません。

    dailyと付いているものを使う限り、それ以下の時間間隔での呼び出しは出来ないと思います。
    daily,weekly,monthlyで呼ばれるスクリプトは元をたどるとcronの仕組みを使って呼び出されているのではないでしょうか。
    直接cronにスクリプトを登録してしまうのが良いような気がします。

    キャンセル

  • 2020/06/20 20:33

    hidezzzさん、回答ありがとうございます。

    Mac内容にも関わらず色々お答えいただきありがとうございます。

    確認して行ったところ、確定ではないですが、どうやらデフォルトで設定されている一日分の時間トリガーなどは変更しても、反映でしていないようでした。

    300秒設定とし、sudo periodic daily(トリガーバックアップできているかの確認)を行いましたが、
    動きませんでした。私の設定が悪いだけかもしれませんが.....

    自作スクリプトを使用する場合は〜という表記が参考書にもあるのですが、いまいちわかりにくく具体例がなかったのですが実際は可能な旨が記載されていたので、おそらくできるみたいですが、
    バックアップスクリプト自体をどこにおき、またスクリプト名とcron設定内部の引数なども確認する限りは紐づいていないようでした。(そもそもdaily.localやweekly.localなどの名前以外に変更すると動作しないみたいです。)

    cron内に直接スクリプト記述などに関してはちょっと私にはまだ難しい気がしますので、もう少し精進してから臨んでみたいと思います。

    ご親切にありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる