Transferencia Btrfs, recuperación
Transferir a la partición btrfs, rsync
pacman -S rsync btrfs-progs arch-install-scripts
lsblk
- resalte todas las secciones para decidir qué montar.
Si es necesario, particione el disco, -z dice que ponga a cero la tabla de particiones.
cfdisk -z /dev/sda
Montamos.
mount /dev/sda6 /mnt
Creemos tres subvolúmenes raíz, un directorio de inicio de usuario y un subvolumen de almacenamiento.
btrfs subvolume create /mnt/@_root
btrfs subvolume create /mnt/@_home
btrfs subvolume create /mnt/@_snapshots
btrfs subvolume list /mnt
Para transferir, monte el sistema de respaldo y transfiéralo.
mkdir /mnt/dump
mount /dev/sdb1 /mnt/dump
rsync -avAXHP --delete --delete-excluded --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/lib/pacman/sync/*","/var/cache/*","/var/tmp/*","/boot/*","/home/*"} /mnt/dump/@/* /mnt/@_root/
rsync -avAXHP --delete --delete-excluded --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/lib/pacman/sync/*","/var/cache/*","/var/tmp/*","/boot/*","/home/*"} /mnt/dump/@home/* /mnt/@_home/
Y desmonte la raíz FS.
umount /mnt
rm -rf /mnt/dump
Para montar un subvolumen como una partición de disco normal, el comando de montaje debe especificar la opción subvol=PATH. PATH: ruta relativa a la raíz FS. Monte la raíz. Compresión zstd o lzo.
mount -o subvol=@,compress=zstd /dev/sda6 /mnt
¿Cuáles son las opciones recomendadas para instalar en una tarjeta SD o una unidad SSD lenta? en /etc/fstab
. https://wiki.debian.org/Btrfs.
/dev/sdaX / btrfs x-systemd.device-timeout=0,noatime,compress=lzo,commit=0,ssd_spread,autodefrag 0 0
UUID=<the_device_uuid> /mount/point/ btrfs noauto,compress=lzo,noatime,autodefrag 0 0
Creamos un directorio y montamos nuestro directorio de usuario futuro en él, si la partición de arranque está separada, debe montarlo en /mnt/boot
.
Si es necesariomkdir /mnt/home
.
mount -o subvol=@home,compress=zstd /dev/sda6 /mnt/home
Si es necesario mkdir /mnt/snapshots
.
mount -o subvol=@snapshots,compress=zstd /dev/sda6 /mnt/snapshots
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o bind /dev /mnt/dev
cp -L /etc/resolv.conf /mnt/etc
swapon /dev/sda3
A partir del kernel 5.0, puede crear un archivo de intercambio, el archivo de intercambio debe estar ubicado completamente en un dispositivo, creado con COW deshabilitado y compresión.
touch /swap # crear un archivo /swap
chmod go-r /swap # el intercambio debe ser 600
chattr +C /swap # apagar COW, la compresión también se apaga
fallocate /swap -l4g # Archivo 4Gb
mkswap /swap
swapon /swap
Ahora necesitamos inicializar el sistema. Edite FSTAB o ejecute genfstab.
rm /mnt/etc/fstab
genfstab -pU /mnt > /mnt/etc/fstab
Vayamos a nuestro nuevo sistema.
chroot /mnt /bin/bash
Generando initramfs con mkinicpio.
mkinitcpio -p linux
Instale el cargador de arranque GRUB2 y configúrelo.
grub-install /dev/sdХ
grub-mkconfig -o /boot/grub/grub.cfg
exit
o "Ctrl + D" para salir de chroot.
Ahora necesitas desmontar todo.
umount /mnt/home
umount /mnt/snapshots
umount /mnt
reeboot
Instantánea a otra partición/disco
Montamos la sección principal.
mkdir /mnt/arch
mount /dev/sda6 /mnt/arch
Monte la partición/disco para volcar la instantánea.
mkdir /mnt/dump
mount /dev/sda8 /mnt/dump
Es necesario crear instantáneas, solo lectura, requiere enviar
. Para enviar a otros nodos.
Volcamos todo, desde la caché hasta el disco
sync
, IMPORTANTE.
btrfs subvolume snapshot -r /mnt/arch/@ /mnt/arch/@_BACKUP
sync
btrfs subvolume snapshot -r /mnt/arch/@home /mnt/arch/@home_BACKUP
sync
Transferimos instantáneas. Puede enviar a archivobtrfs send /mnt/arch/@_BACKUP -f /dump.sn
, recibir de archivobtrfs receive /mnt/dump/ -f /dump.sn
.
btrfs send /mnt/arch/@_BACKUP | btrfs receive /mnt/dump/
btrfs send /mnt/arch/@home_BACKUP | btrfs receive /mnt/dump/
Instantáneas incrementales de solo lectura.
btrfs subvolume snapshot -r /mnt/arch/@ /mnt/arch/@_BACKUP_new
sync
btrfs subvolume snapshot -r /mnt/arch/@home /mnt/arch/@home_BACKUP_new
sync
Crea una diferencia entre las imágenes.
btrfs send -p /mnt/arch/@_BACKUP /mnt/arch/@_BACKUP_new | btrfs receive /mnt/dump/
btrfs send -p /mnt/arch/@home_BACKUP /mnt/arch/@home_BACKUP_new | btrfs receive /mnt/dump/
Echemos un vistazo a la lista.
btrfs subvolume list /mnt/dump
Envío de SSH
Localmente: generar claves, crear ~/.ssh/config
.
# generación de un par de claves, públicas (enviar al servidor)
# id_rsa.pub
ssh-keygen -t rsa -b 4096 -C "lol@gmail.com"
# nano ~/.ssh/config
Host office
HostName 192.168.100.51
Port 22
User test
PasswordAuthentication yes # en el servidor /etc/ssh/sshd_config
systemctl restart sshd
ssh-copy-id -i ~/.ssh/id_rsa.pub office # enviando la clave al servidor
# en el servidor /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no # deshabilitar el acceso con contraseña, todos.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
systemctl restart sshd
systemctl enable sshd
btrfs send /mnt/arch/@_BACKUP | ssh office "btrfs receive /mnt/backups"
# o
btrfs send /mnt/arch/@_BACKUP | ssh -p 22 test@192.168.100.51 "btrfs receive /mnt/backups"
Пример скрипта - инкрементальный, взято с (ubuntu.ru/wiki).
#!/bin/bash
# puntos de montaje
src=$(mktemp -d "${TMPDIR:-/tmp/}$(basename 0).XXXXXXXXXXXX")
dst=$(mktemp -d "${TMPDIR:-/tmp/}$(basename 0).XXXXXXXXXXXX")
# montamos
mount /dev/sda2 $src
mount /dev/sdb2 $dst
if [ -e $src/root_BCKP ]
then # primer lanzamiento de copia de seguridad completa
# Crea una instantánea de solo lectura
btrfs subvolume snapshot -r $src/@ $src/root_BCKP
sync
# Continuar
btrfs send $src/root_BCKP | btrfs receive $dst/
else # reiniciar, incremental
# Rebautizar
mv $src/root_BCKP $src/root_BCKP_prev
mv $dst/root_BCKP $dst/root_BCKP_prev
# Crea la corriente
btrfs subvolume snapshot -r $src/@ $src/root_BACKUP
sync
# respaldo incremental
btrfs send -p $src/root_BCKP_prev $src/root_BACKUP | btrfs receive $dst/
fi
# en $dst/root_BACKUP copia de la raíz.
umount $src
umount $dst
# Eliminar puntos de montaje
rmdir $src
rmdir $dst
Todo funciona al revés también.
Eliminar o cambiar el nombre mv
.
btrfs subvolume delete /mnt/dump/@_BACKUP
btrfs subvolume delete /mnt/dump/@home_BACKUP
Cambie el nombre de las nuevas instantáneas.
mv /mnt/dump/@_BACKUP_new /mnt/dump/@
mv /mnt/dump/@home_BACKUP_new /mnt/dump/@home
Propiedades. Ahora están en ro - solo lectura (solo lectura), cambian a rw - lectura-escritura (lectura-escritura). Los valores cambian así:
ro true
,ro false
.
btrfs property get /mnt/dump/@ # ver propiedades
btrfs property set /mnt/dump/@ ro false
btrfs property set /mnt/dump/@home ro false
btrfs subvolume show /mnt/dump/@ # información
Eliminar si es necesario.
btrfs subvolume delete /mnt/arch/@_BACKUP
btrfs subvolume delete /mnt/arch/@home_BACKUP
Desmontar.
umount /mnt/arch
umount /mnt/dump
rmdir /mnt/{arch,dump}
La recuperación, como arriba, se carga desde live-usb o desde otro sistema. Monte la partición para recuperación, la dañada y la partición con copia de seguridad, restaure instantáneas.
Monte el sistema de archivos para reconstruir fstab e inicializar.
mount -o subvol=@,compress=zstd /dev/sda8 /mnt
ls /mnt
mount -o subvol=@home,compress=zstd /dev/sda8 /mnt/home
Si la partición de arranque está separada, entonces debe montarla en /mnt/boot y en todos los demás subvolúmenes.
mount /dev/sda2 /mnt/boot
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o bind /dev /mnt/dev
cp -L /etc/resolv.conf /mnt/etc
swapon /dev/sda3
A partir del kernel 5.0, puede crear un archivo de intercambio, el archivo de intercambio debe estar ubicado completamente en un dispositivo, creado con COW deshabilitado y compresión.
touch /swap # crear un archivo vacío/swap
chmod go-r /swap # el intercambio debe ser 600
chattr +C /swap # apagar COW, la compresión también se apaga
fallocate /swap -l4g # Archivo 4Gb
mkswap /swap
swapon /swap
Edite FSTAB o ejecute genfstab.
rm /mnt/etc/fstab
genfstab -pU /mnt > /mnt/etc/fstab
nano /mnt/etc/fstab
Vayamos a nuestro nuevo sistema.
chroot /mnt
O zsh.
chroot /mnt /bin/zsh
Regenerado.
mkinitcpio -p linux
Instale el cargador de arranque GRUB2 y configúrelo.
grub-install /dev/sdХ
grub-mkconfig -o /boot/grub/grub.cfg
Inicializamos las claves y las actualizamos si es necesario.
pacman-key --init && pacman-key --populate && pacman-key --refresh-keys && pacman -Syy
exit
o "Ctrl + D" para salir de chroot.
Ahora necesitas desmontar todo.
umount -R /mnt
reeboot