Linuxシステム全体をtarで完全バックアップする方法

基本的なバックアップコマンド:

tar -cvpzf system_backup.tar.gz --exclude=/system_backup.tar.gz --one-file-system /

各オプションの説明:

    c			アーカイブを作成
    v			詳細モード、圧縮過程を表示
    p			ファイルの権限を保持(復元時に重要)
    z   		gzip形式で圧縮
    f  <filename>	出力ファイル名を指定
    --exclude=		除外するファイルまたはディレクトリを指定
    --one-file-system	ルートディレクトリのみをバックアップし、他のファイルシステムを除外
                        例:/home /sys /proc /run /dev /media
    /			バックアップ対象のルートディレクトリを指定

tarのコマンドオプションはハイフン付きで指定できますが、省略することも可能です。ハイフンを使用する場合、fオプションは最後に配置し、その後にファイル名を指定する必要があります。これは実際にはパラメータであり、オプションではありません。

バリエーション:xzまたはbzip2圧縮を使用する場合:

tar -cvpjf system_backup.tar.xz --exclude=/system_backup.tar.xz --one-file-system /

/homeや/bootなどのディレクトリが異なるパーティションにある場合、--one-file-systemオプションを使用するとこれらが除外されます。これらを含めるには、--one-file-systemを省略し、代わりに除外ディレクトリを個別に指定する必要があります:

cd /                              # 重要:以下のコマンドは/ディレクトリから実行する前提
tar -cvpzf system_backup.tar.gz \
--exclude=/system_backup.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/run \ 
--exclude=/media \ 
--exclude=/var/log \
--exclude=/var/cache/apt/archives \
--exclude=/usr/src/linux-headers* \ 
--exclude=/home/*/.gvfs \
--exclude=/home/*/.cache \ 
--exclude=/home/*/.local/share/Trash /

システム復元:

ライブCDまたは別の方法でシステムを起動し、ファイルマネージャで復元対象のルートパーティションをクリックします。通常、自動的に/mediaディレクトリにマウントされます。

sudo tar -xvpzf /path/to/system_backup.tar.gz -C /media/mount_point --numeric-owner

--numeric-ownerオプションは、元のファイル権限を復元するために重要です。

アーカイブ作成時に--one-file-systemオプションを使用せず、アーカイブに/bootや/homeなどの他のパーティションのファイルが含まれている場合は、復元前に手動でディレクトリを作成し、対応するパーティションをマウントしてから復元を実行する必要があります。

復元後、アーカイブに含まれていなかったディレクトリを作成する必要があるかもしれません:

mkdir proc sys mnt media

GRUBの修復

sudo -s
for f in dev dev/pts proc ; do mount --bind /$f /media/mount_point/$f ; done
chroot /media/mount_point
dpkg-reconfigure grub-pc

タグ: linux tar バックアップ システムリカバリ grub

7月24日 18:44 投稿