Linux MintでTimeshiftを使い始めたとき、Linux Mintでバックアップが可能であることがわかりましたが、いくつかのbtrfs
要件がありました。 Linuxシステムもbtrfsにマウントする必要がありました(@
サブボリュームにマウントする必要があるようです)。私の場合ではありませんext4
。rsync
年齢バックアップしてください。
チュートリアルの検索を開始しましたが、btrfsスナップショットに関する一般的な記事だけが見つかりましたが、何も見つかりませんでした。日常的なバックアップコマンド中実際の環境。いくつかのテストの最後に見つけました。システムがext4にインストールされていても、外部BtrfsドライブからBtrfsスナップショットを作成する方法(または何でも)私はLinuxとUnix Stackexchangeで答えを共有することにしました。
答え1
設定
これが/media/myuser/btrbaks
外部ドライブのbtrfsパーティションのマウントポイントであると仮定すると(パーティションとマウントの詳細については、最後を参照)、ここでのコマンドは最初の起動時にのみ適用されます。
バックアップ用のディレクトリを作成します。
sudo mkdir /media/myuser/btrbaks/BACKUPS
rsync コマンドの対象となる @ サブボリュームを作成します。
sudo btrfs subvolume create /media/myuser/btrbaks/BACKUPS/@
毎日のバックアップコマンド
すべてのバックアップに対して開始する必要があるコマンドは次のとおりです。
同期:
sudo rsync -aAXv --delete --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/* --exclude=/media/* --exclude="swapfile" --exclude="lost+found" --exclude=/home/* --exclude=/root/* / /media/myuser/btrbaks/BACKUPS/@/
Btrfsスナップショット:
sudo btrfs subvolume snapshot /media/myuser/btrbaks/BACKUPS/@ /media/myuser/btrbaks/BACKUPS/@_bak_`date +%Y.%m.%d_%H.%M.%S`
その後、次のことを確認できます。
sudo btrfs subvolume list /media/attilio/btrbaks/
ID 279 gen 109 top level 5 path BACKUPS/@
ID 280 gen 109 top level 5 path BACKUPS/@_bak_2020.09.14_08.12.2
回復中
システムが起動したら、次のコマンドを使用して復元できます。
sudo rsync -aAXv --dry-run --delete --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/* --exclude=/media/* --exclude="swapfile" --exclude="lost+found" --exclude=/home/* --exclude=/root/* /media/attilio/btrbaks/BACKUPS/@/ /
--dry-run
実際の復元を実行するには、オプションを削除する必要があります。
@
これは最後のバックアップを指すため、@_bak_2020.09.14_08.12.22
またはスナップショットを使用して変更できます。
システムが起動しない場合は、ライブUSBから起動し、同じコマンドを実行し、rsync<source>
と<destination>
パーティショニングとマウントに関する注意
私のハードウェア構成は次のとおりです。
/dev/sda5 ext4 / # system installation
/dev/sdb3 btrfs /media/myuser/btrbaks # external drive has several partitions, one is btrfs and here is the mount point that is automatically assigned by linux mint
答え2
再インストールせずにext4をbtrfsに変換することもできます。これで、スナップショットとライブシステムの両方が同じパーティションを使用します。
- 利点:より速く、より少ないディスク容量が必要です。
- 欠点:ディスクが損傷すると、スナップショットも失われます。この問題は、次のいずれかの方法で処理できます。
- これら2つの方法を組み合わせます。 (タイムシフトでbtrfsスナップショットを使用し、rsyncを使用して選択したスナップショットを別のディスクに移動)
- RAIDの使用(btrfs自体はRAIDで使用できますが、一般的な方法もうまく機能します)
変換には複数のステップが含まれます。
メモ:仮想マシンで最初のテストを実行します。まだです。何か忘れてしまったことがあるかもしれません。
- ライブUSBスティック(Mintのインストールに使用したものなど)から起動し、新しい端末からルートになります。
sudo -i
- ext4をbtrfsに変換する:(これがあなたのパーティションであると
btrfs-convert /dev/sda1
仮定)/dev/sda1
- 「作業」を開始できるようにインストールしてください。
mount /dev/sda1 /mnt
- ルートファイルシステムが次の名前のサブボリュームにあることを確認してください
@
。btrfs sub snap /mnt /mnt/@
- ホームディレクトリ用に別々のディレクトリを作成します。
btrfs sub create /mnt/@home && rsync -HAXav /mnt/home/ /mnt/@/home/
- パーティションのUUIDを検索します。
ls -l /dev/disk/by-uuid | grep sda1
/
取り付けられたラインを/mnt/@/etc/fstab
2本のラインに置き換えます。
UUID=xxxxxxxxx-xxxx-xxxx-xxxxxxxx/btrfs デフォルト、subvol=@ 0 1 UUID=xxxxxxxxx-xxxx-xxxx-xxxxxxxx /home btrfs デフォルト、subvol=@home 0 2
そして(xxxxxxxx-xxxx-xxxx-xxxxxxxx
あなたの真実に従ってUUID
)変わりなさい。
- 同じファイルからスワップを参照する行を削除します。
linux
inを含む最初の行を/mnt/boot/grub/grub.cfg
次に変更しlinux /@/boot/vmlinuz-YYYY root=UUID=XXXX ro rootflags=subvol=@
(YYYY
元のカーネルバージョンとXXXX
ユーザーバージョンを使用UUID
)、次を実行します。cp /mnt/boot/grub/grub.cfg /mnt/@/boot/grub/grub.cfg
- システムを再起動し、ルートに進みます。
sudo -i
@
あなたとサブボリュームのデータのみを維持してください@home
。mkdir /mnt/fullbtrfs && mount /dev/sda1 /mnt/fullbtrfs && rm -rf /mnt/fullbtrfs/[a-z]* && umount /mnt/fullbtrfs
- 残りのgrub構成を変更します(私たちは数ステップ前に必要な作業だけを行いました)。
update-grub
- 再起動し、タイムシフト設定をbtrfsに変更します。