以下rsync
は、Piのバックアップに使用するためのイントロです。最初のバックアップが作成されたら、この方法で最新の状態に保つことは、画像全体を絶えずリッピングするよりもはるかに高速です。これは、ローカルハードドライブまたはネットワーク経由で実行できます。
実際には、実行中のシステムの完全なコピーをバックアップとして望んでいません。これは、表面上はファイルシステムにあるものの一部が実行時にのみ存在するためです。それをバックアップに含め、それを使用して後でイメージを再作成すると、問題が発生する可能性があります。
他にもいくつかの例外があります。除外するrsync
(glob)パターンのリストを受け入れることができ、それらをファイルから読み取ることができるので、最初にそのようなファイルにあるべきものを見てみましょう。エントリはの形式で/directory/*
あり、ではないことに注意してください/directory
。これは、それらが存在することを望んでいるが、それらの中に何もコピーしたくないためです。
/proc/*
/sys/*
これらは実際にはディスク上には存在しません。それらはカーネルへのインターフェースであり、メモリ内で作成および管理します。これらをコピーしてからシステムにコピーして再起動すると、カーネルはそれらをインターフェイスのマウントポイントとして使用するため、(せいぜい)意味がありませんデータが入っているディレクトリで試してください。動作し、害はありませんが、ディレクトリにあったものにはアクセスできなくなります。]
/sys
および/proc
マウントポイントが存在することが重要であることに注意してください。 ただし、何も含めるべきではありません。次:
/dev/*
dev
ディレクトリは全く同じものではありませんproc
し、sys
私たちの目的のためにそれがあります。バックアップなどで同じデバイスノードを使用できるように、これを保存する必要があると思われる場合は、間違いです。気にしないでください。コピーしないでくださいdev
。昔々、Linuxはそのように機能していましたが、もう機能しません。
/boot/*
これは、Raspbianなど、Pi固有のディストリビューションのほとんど(おそらくすべて)での特殊なケースです。実際には、最初のvfatパーティションのマウントポイントです。これについては別に扱います。何をするにしても、ここに含めないでください。これもまたマウントポイントだからです。
/tmp/*
/run/*
/run
通常、ディスク上でもメモリ上でもありません。おそらくそうかも/tmp
しれません(これによりSDカードの動作が少し節約されます)が、いずれにしても、名前が示すように、これらは永続的なデータを保存する場所ではありません。これらを使用するアプリケーションは、起動するたびに削除される可能性があります。
/mnt/*
/media/*
これらは特に、ハードドライブまたはUSBスティックにバックアップする予定で、デバイスが/mnt
または/media
(自動マウントでは後者を使用する傾向がある)場合に重要になります。ファイルシステム内のデバイスの場所を除外しない場合ドライブの容量がなくなるまで、ドライブの内容をそれ自体にバックアップするループを作成します。私は愚かな何かを見つけるのに十分賢いrsync
かもしれないが、前提をテストすることを避けようとするだろうと思う。
実際のバックアップについて:ローカルにマウントされたハードドライブ、USBのものなどにバックアップするディレクトリを作成します。たとえば、「pi_backup」。別の方法としてssh
(以下を参照)またはネットワークマウントされたファイルシステムを使用してリモートの場所にバックアップすることもできますが、これにはおそらくしばらく時間がかかります。
除外するリストを含むファイルが/rsync-exclude.txt
1で、ドライブがの/mnt/usbhd
場合、実際のバックアップを実行するには:
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
に末尾のスラッシュがあることに注意してくださいpi_backup/
。
これにはしばらく時間がかかり、大量の出力が生成されます(代わりにログで調べたい場合は、appendを追加します> rsync.log
)。 --delete
最初は無意味ですが、バックアップを最新の状態に保つために使用します。これにより、後でPiで削除したものもバックアップから確実に削除されます。a
ディレクトリにセット再帰と、すべてのファイルが一致した属性を確認します。 ハードリンク-H
を保存することです2、v
冗長性のためですrsync
。それが出力を得る理由です(そうでなければ静かです)。詳細man rsync
をご覧ください。
--exclude-from
ファイルをスキップできるショートカットがあります。コピーしたくないもの(/tmp
など)がすべて別のファイルシステムにあることが確実な場合は、次のように使用できます。
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
挿入されました。これはの短い形式で--one-file-system
、rsync
ファイルシステムの境界を越えないようにします。個人的にはを好み--exclude-from
ますが、たとえばデフォルトのRaspbianでは--one-file-system
うまく動作します。-x
気をつけたい場合は両方を使用できます:D
これは完全なバックアップではありません。何も入れておらずboot
、バックアップを使用してカードをコンピューターに貼り付けて実行するだけでシステムを復元することができれば十分です:
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
画像を作成する必要がある場合、それは少し効率的ではありませんが、新しい画像を含むカードでこれを行うこともできます(基本画像と同じと仮定します)(その後、ほとんどの画像を上書きするため)。そのようなイメージのあるUSBアダプターを介して別のSDカードを接続し、上記の方法を使用して重複したカードを維持することもできます。
/boot
を含むもの(たとえば、カスタムカーネル)を入れた場合は/boot/config.txt
、それもバックアップする必要があります(非常に簡単です-それほど多くはありません)。別々に行うだけで、復元すると、その内容が最初のパーティションに格納されます。
バックアップ可能なブランクの Raspbianスタイルのイメージを作成する場合は、こちらをご覧ください。同様の方法論を使用して、空のRaspbianスタイルカードを作成でき.img
ます。ファイルを処理するのではなく、実際のデバイス(例:)を処理します/dev/sdb
。つまり、パーティションテーブルを作成してfdisk
から、でフォーマット/dev/sdb1
およびsdb2
(または何でも)mkfs
。
しかし、画像全体をコピーする方が簡単です!なぜこれで悩むのですか?
それほど難しくありません。10分で空のカード(最後のリンクに従ってフォーマットされた)に復元しました。はい、dd
すべてを単純に使用する方が簡単です(わかりにくい単語などが見つかった場合)が、バックアップを更新するたびに100%を実行する必要があるため、かなり時間がかかります。を使用するrsync
と、バックアップが存在する場合、バックアップの更新がはるかに高速になるため、cronを使用して毎日痛みを伴わないように設定できます。ネットワーク経由でも。6時間ごと。頻繁に行うほど、時間がかかりません。
rsync
経由で ssh
以下に例を示します。
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
「オプション」は、たとえば、-av --delete --exclude-from=/rsync-exclude.txt
「sshオプション」は通常使用するもの(あれば)です。ssh
システムバックアップの目的でこれを行うには、rootアクセスが必要です(サーバーに設定PermitRootLogin=yes
し/etc/ssh/sshd_config
て再起動します)。
1このファイルを保持する必要があります。#
またはで始まる行にコメントを挿入でき;
ます。これには実際のrsync
コマンドが含まれる場合があります。このコマンドは後でコピーして貼り付けることができるため、毎回覚えておく必要はありません。
2指摘してくれたクリスのおかげで、rsync
これは自動的には行われません。
dd
でくださいrsync
。