Linuxファイルのバックアップは、サーバー(もちろんクライアントPCでも)を運用するうえで必要不可欠なものです。Linux環境で使えるバックアップツールは様々なものがありますが、そのなかでもrsyncは汎用性が高く、広く使われています。この記事では、実際に様々な方法でファイルをバックアップするコマンド例を紹介します。【バックアップ基礎知識編】を参照してください。結局どれを使うのがいいの?rsyncコマンドリファレンスこの記事のコマンド例や解説では、バックアップ元やバックアップ先として以下のディレクトリ・ファイルが存在しているものとします。転送元/転送先パスには、絶対パスもしくは相対パスが使用できます。転送元ディレクトリの内容を維持したままコピーする。実際にファイル転送を行わない。組み合わせると、指定したコマンドでどのようにファイル転送が行われるかの統計情報のみを表示する。コマンドのテストに便利。ファイルを圧縮して転送する。ネットワーク越しの転送に便利。/(スラッシュ)を付けるか付けないかで挙動が変わります。スラッシュを付けない場合、パスに指定されたディレクトリごとコピーします。textスラッシュを付けた場合、パスに指定されたディレクトリ配下のファイルやディレクトリをコピーします。textコマンド例フルバックアップ+増分バックアップ(世代管理なし)同じコマンドで実装できます。/test/dst1回目のバックアップは、転送元に存在するファイル・ディレクトリをすべて転送先へバックアップします。(=フルバックアップ)2回目以降のバックアップは、前回のバックアップからの変更部分(変更のあったファイルと新規作成されたファイル)のみ転送されます。(=増分バックアップ)最もお手軽なバックアップ方法ですが、バックアップデータが同じディレクトリにたまっていくこと、転送元で削除されたファイルがいつまでも転送先に残り続けることから、バックアップディレクトリが多少ごちゃつきます。世代管理はできないので、増分バックアップで世代管理をしたい場合は、増分バックアップ(世代管理あり)がおすすめです。オプションを付けることで、転送元にないファイルは転送先からも削除されます。これにより、転送先は常にバックアップ時点での転送元の状態を反映するようになります。(=ミラーリング)もちろん、前回のバックアップから変更がないファイルは転送されません。バックアップの世代管理をする必要がない場合はこの手法が最も適していると思います。よって削除されるファイルをバックアップディレクトリに退避します。考えるとわかりやすいかと思います。指定することができます。コマンド例では、バックアップ時刻のタイムスタンプをディレクトリ名にするように設定しています。バックアップディレクトリを転送先ディレクトリよりも1つ上の階層に置いているのがミソです。(同じ階層に置くと面倒なことになります。面倒になるのかは実際に試してみるのがわかりやすいと思います。)具体的には、以下のような感じでバックアップデータがたまっていきます。世代管理ができていることがわかります。オプションで、既存のバックアップのあるディレクトリを指定すると、そのディレクトリと転送元の差分をバックアップすることができます。コマンド例では、転送先ディレクトリの名前をバックアップ時刻のタイムスタンプにしています。これにより、差分バックアップで世代管理ができます。具体的には、以下のような感じでバックアップデータがたまっていきます。指定されたディレクトリ内の変更がなかったファイルへのハードリンクが張られます。見た目上は毎回フルバックアップをとっているように見えます。既存のファイルはハードリンクを張るだけなので、ファイル転送やディスク消費が発生するのは差分のファイルのみになります。任意の時点のバックアップをすぐにリストアすることができるという点で、優れたバックアップ方法ですが、増分バックアップ(世代管理あり)がこれのほぼ上位互換なので、どうしても差分バックアップしたい場合くらいしか利用シーンが思いつきません。具体的には、以下のような感じでバックアップデータがたまっていきます。#初回のフルバックアップ増分バックアップ(世代管理あり)差分バックアップ(ハードリンク)の応用です。常に1つ前のバックアップを指すようにスクリプトを組んでやると、世代管理ありの増分バックアップを実装できます。個人的には、世代管理をするならこのバックアップ手法がいちばん汎用性があると思います。+%Y%m%d-%H%M%S)"直近のバックアップは、バックアップ先の親ディレクトリをlsで表示したときの末尾を取得することで指定できます。(コード例4行目)具体的には、以下のような感じでバックアップデータがたまっていきます。#12月7日時点のバックアップで、結局どれを使うのがいいの?何か他に特別な要件がなければこうなると思います。コメントをキャンセル質問・感想などお気軽にどうぞ。*が付いている項目は入力必須です。メールアドレス以外の項目が公開されます。スパム防止のため、コメント反映まで少々時間がかかります。SSHのセキュリティをさらに高める設定リンクGitHubアカウントを開設しました!当ブログ内で取り上げたコードなどを上げています。