自己紹介
はじめまして。某大学で大学院生をやっているactttと申します。普段は画像や知覚の研究をしています。
本日Qiitaのアカウントを作成したので早速何か記事を書きたいと思い、まず今回の内容に触れることにしました。
はじめに
サーバーやデータ管理等でFreeBSDを使う場合、非常に重要なファイルやディレクトリは自動的にバックアップされるようにするのが望ましいです。ここでは、FreeBSDでディレクトリを自動的にバックアップする方法について紹介します。
早速バックアップの設定をする
指定時刻にバックアップを行うには、定期的に実行するコマンドを管理する「crontab」(場所:/etc/crontab)と、ファイルやディレクトリの同期を行う「rsync」(場所:/usr/local/bin/rsync)というコマンドが必要になります。
まず、【/etc/crontab -e】を実行してください。すると、定期的に実行するコマンドの一覧をviで編集できるようになります。(※間違えて【/etc/crontab -r】と入力しないようにしてください!以前に設定した内容が全て消えてしまいます)
次に、この状態で内容を入力していきます。例えば、以下のように記述します。
10 5 * * 1 /usr/local/bin/rsync -au --delete /dir001/ /backup_dir001/
これを例に挙げ、記されている内容を以下で説明します。
- 「10 5 * * 1」:実行時間を表します。左から順に、「分」「時」「日」「月」「曜日(0:日曜日-6:土曜日)」です。この場合は、「毎週月曜日の5:10にバックアップを実行する」ことを表します。
- 「/usr/local/bin/rsync」:先程説明した「rsync」コマンドを実行することを表します。
- 「-au」:「rsync」コマンドのオプションです。「a」はアーカイブモード(「ディレクトリの再帰的処理」や「パーミッションの保持」等のオプションを一つに纏めたもの)で同期することを、「u」は同期先のファイルの方が新しい場合はスキップすることを表します。
- 「--delete」:「rsync」コマンドのオプションです。同期元のディレクトリに無くて同期先のディレクトリにあるファイルを削除するようにします。例えば、同期元で何らかのファイルを削除した場合、このオプションが無いとその変更が同期先にも反映されません。
- 「/dir001/」:同期元のディレクトリを表します。ここで、後ろにスラッシュを付ける場合と付けない場合(今回であれば「/dir001」)とで挙動が変わります。具体的には、後ろにスラッシュを付けるとそのディレクトリの中身を同期先のディレクトリにコピーし、後ろにスラッシュを付けないとそのディレクトリを同期先のディレクトリにコピーします。
- 今回のように「/dir001/」とすれば、中に「AAA」と「BBB」というファイルが入っていた場合、「backup_dir001」の中に「AAA」と「BBB」がコピーされます。逆に「/dir001」とすれば、「backup_dir001」の中に「dir001」がコピーされます。
- 「/backup_dir001/」:同期先のディレクトリを表します。
ファイルやディレクトリの同期の設定をもっと変更したければ、「rsync」コマンドのオプションについて調べてみてください。
同期先のディレクトリには、同期元のディレクトリが保存されているHDDとは別のHDD(バックアップ用のHDD)のディレクトリを用意すると良いと思います。
さいごに
今回は初めての記事ということで、FreeBSDの時刻指定バックアップについて紹介させて頂きました。
自分で使っている方法を基にしていますが、もしも間違い等ございましたらお教え頂けたら幸いです。
ここまでお読みくださりありがとうございました!