ゆるい技術メモ

記事一覧 / ファイル管理

Raspberry Pi の作業フォルダを rsync で控える

手順メモ · 一般的な例 · 実行環境依存

コピー元と保存先を確認し、dry-run と別フォルダへの読み戻しで内容を確かめる例。

対象はファイルのコピー

ここでは Raspberry Pi などの Linux 環境で、利用者の作業フォルダを別の保存先へコピーする例を扱います。SD カード全体の起動可能イメージを作る手順ではありません。パーティション情報やブート領域の復元は含みません。

この手順は一般的な例で、特定の NAS やカードで復旧を実測したという記録ではありません。保存先のファイルシステムによっては、所有者やパーミッションなどを同じ形で保存できない場合があります。

コピー元と保存先を確かめる

例ではコピー元を $HOME/projects/、外部ストレージの保存先を /media/backup/raspi-projects/ とします。実在するパスに置き換え、外部ストレージが正しくマウントされていることと空き容量を先に確認します。単にディレクトリがあるだけでは、目的のディスクに書き込める証拠になりません。

rsync --version
ls -ld "$HOME/projects" /media/backup

保存先を用意する操作は、マウント先を確認してから行います。コピー元の末尾の / は、そのディレクトリの中身を対象にする指定です。

dry-run の後にコピーする

mkdir -p /media/backup/raspi-projects
rsync -ain -- "$HOME/projects/" /media/backup/raspi-projects/

-a は再帰コピーなどを含むアーカイブモード、-i は変更内容の一覧、-n は実際に変更しない dry-run です。コピー元とコピー先の向き、想定外のファイルがないかを確認してから、次を実行します。

rsync -ai -- "$HOME/projects/" /media/backup/raspi-projects/

この例は保存先だけにあるファイルを削除する指定を使いません。ただし、同じ名前のファイルは更新され得るため、世代を残したい場合は保存先を日付などで分けてください。アーカイブモードだけでは ACL、拡張属性、ハードリンクのすべてを保存するわけでもありません。

読み戻しは別フォルダで

mkdir -p "$HOME/restore-check"
rsync -ain -- /media/backup/raspi-projects/ "$HOME/restore-check/"
# 一覧を確認した後だけ、dry-run を外す
rsync -ai -- /media/backup/raspi-projects/ "$HOME/restore-check/"

元の作業フォルダへ直接上書きせず、読み戻したファイルを開いて確認します。必要なら元データが止まっている条件で内容を比較します。コピーの終了だけで、アプリケーションや OS 全体が復旧できるとは判断できません。

動いているデータは別に考える

実行中のデータベースなどは、コピー中にも内容が変化します。アプリケーションが用意するバックアップ機能や整合性を保てる停止手順を使い、その出力を保存対象にします。定期実行にする場合も、終了コード、ログ、空き容量と読み戻し確認を別々に見ます。

参考にした公式資料