GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Retroceder a un estado de trabajo con btrfs + apt-btrfs-snapshot en Ubuntu 12.10

Este tutorial explica cómo puede revertir las operaciones apt fallidas (como apt-get upgrade) y volver al estado anterior del sistema con apt-btrfs-snapshot en un sistema Ubuntu 12.10 que usa el sistema de archivos btrfs. apt-btrfs-snapshot crea una instantánea del sistema antes de la operación apt. Ser capaz de restaurar fácilmente el estado anterior del sistema después de una operación apt fallida elimina gran parte del dolor que los administradores de sistemas tienen que enfrentar normalmente y es una de las mejores características del sistema de archivos btrfs.

¡No emito ninguna garantía de que esto funcione para usted!

1 nota preliminar

En este tutorial, instalé todo el sistema en un sistema de archivos btrfs, es decir, no hay una partición /boot separada en un sistema de archivos ext. Si usa una partición /boot separada y apt instala algo en esa partición (como un nuevo kernel), no puede deshacer los cambios en la partición /boot con apt-btrfs-snapshot; solo se pueden revertir los cambios en la partición btrfs.

Mi disco duro se llama /dev/sda en este tutorial, la partición de mi sistema es /dev/sda1.

Una nota para los usuarios de Ubuntu:

Debido a que debemos ejecutar todos los pasos de este tutorial con privilegios de root, podemos anteponer todos los comandos en este tutorial con la cadena sudo, o convertirnos en root ahora mismo escribiendo

sudo su

2 Instalar apt-btrfs-snapshot

apt-btrfs-snapshot se puede instalar de la siguiente manera:

apt-get install apt-btrfs-snapshot

Para verificar si apt-btrfs-snapshot puede crear instantáneas en las operaciones de apt, ejecute

apt-btrfs-snapshot supported

Debería mostrar:

[email protected]:~# apt-btrfs-snapshot supported
Supported
[email protected]:~#

Si no es así, el diseño del subvolumen btrfs probablemente difiera del diseño predeterminado de Ubuntu, que es el siguiente:

  • @ subvolumen:montado en /.
  • Subvolumen @home:montado en /home.

Este es el diseño de subvolumen predeterminado de Ubuntu:

btrfs subvolume list /
[email protected]:~# btrfs subvolume list /
ID 256 top level 5 path @
ID 258 top level 5 path @home
[email protected]:~#

Si apt-btrfs-snapshot es compatible con su sistema, puede continuar con el capítulo 3.

3 Hacer una operación apt

Ahora hagamos una operación apt como apt-get upgrade para probar si podemos retroceder al estado anterior.

Actualice su base de datos de paquetes...

apt-get update

... y actualice su sistema:

apt-get upgrade

[email protected]:~# apt-get upgrade
Leyendo listas de paquetes... Terminado
Creando árbol de dependencias
Leyendo información de estado... Terminado
Se han mantenido los siguientes paquetes atrás:
  linux-headers-generic linux-image-generic
Los siguientes paquetes se actualizarán:
  apport base-files isc-dhcp-client isc-dhcp-common libwhoopsie0 linux-generic lsb -base lsb-release python3-apport python3-distupgrade python3-problem-report python3.2 python3.2-minimal
  ubuntu-release-upgrader-core vim vim-common vim-runtime vim-tiny whoopsie
19 actualizados, 0 recién instalados, 0 para eliminar y 2 no actualizados.
Necesita obtener 14,4 MB de archivos.
Después de esta operación, se utilizarán 3072 B de espacio adicional en disco.
Hacer quieres continuar [S/n]? <-- ENTRAR
Obtener:1 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main base-files amd64 6.5ubuntu12 [69,6 kB]
Obtener:2 http:/ /de.archive.ubuntu.com/ubuntu/ quantal-updates/main whoopsie amd64 0.2.7 [25.1 kB]
Get:3 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/ main libwhoopsie0 amd64 0.2.7 [7054 B]
Get:4 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main lsb-base all 4.0-0ubuntu26.1 [10,3 kB]
Obtener:5 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main isc-dhcp-client amd64 4.2.4-1ubuntu10.1 [775 kB]
Obtener:6 http ://de.archive.ubuntu.com/ubuntu/ quantal-updates/main isc-dhcp-common amd64 4.2.4-1ubuntu10.1 [836 kB]
Obtener:7 http://de.archive. ubuntu.com/ubuntu/ quantal-updates/main lsb-release all 4.0-0ubuntu26.1 [10.7 kB]
Get:8 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3.2 amd64 3.2.3-6ubuntu3.1 [2585 kB]
Obtener:9 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3.2-minimal amd64 3.2.3 -6ubuntu3.1 [1798 kB]
Obtener:10 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main vim amd64 2:7.3.547-4ubuntu1.1 [1051 kB]
Obtener :11 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main vim-tiny amd64 2:7.3.547-4ubuntu1.1 [413 kB]
Obtener:12 http://de .archive.ubuntu.com/ubuntu/ quantal-updates/main vim-runtime all 2:7.3.547-4ubuntu1.1 [6317 kB]
Obtener:13 http://de.archive.ubuntu.com/ ubuntu/ quantal-updates/main vim-common amd64 2:7.3.547-4ubuntu1.1 [85,7 kB]
Obtener:14 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main ubuntu-release-upgrader-core all 1:0.190.4 [27,7 kB]
Get:15 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-distupgrade all 1:0.190 .4 [141 kB]
Obtener:16 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-problem-report all 2.6.1-0ubuntu6 [9578 B]
Obtener:17 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-apport all 2.6.1-0ubuntu6 [85,7 kB]
Obtener:18 http://de.archive .ubuntu.com/ubuntu/ quan tal-updates/main apport all 2.6.1-0ubuntu6 [164 kB]
Get:19 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main linux-generic amd64 3.5.0.18. 21 [1714 B]
Obtuvo 14,4 MB en 2 s (5465 kB/s)
Compatible
Crea una instantánea de '/tmp/apt-btrfs-snapshot-mp-jnW7I_/@' en '/tmp/apt-btrfs-snapshot-mp-jnW7I_/@apt-snapshot-2012-11-22_11:50:38'
(Leyendo la base de datos... 52666 archivos y directorios instalados actualmente).
Preparando para reemplazar archivos base 6.5ubuntu11 (utilizando .../base-files_6.5ubuntu12_amd64.deb) ...
Desempaquetando archivos base de reemplazo ...
Procesando activadores para man-db .. .
Procesando activadores para install-info...
Procesando activadores para plymouth-theme-ubuntu-text...
update-initramfs:aplazando la actualización (activador activado)
Procesando disparadores para initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.5.0-17-generic
Configuración de archivos base (6.5ubuntu12) ...
(Leyendo base de datos... 52666 archivos y directorios cu instalado actualmente).
Preparándose para reemplazar whoopsie 0.2.5 (usando .../whoopsie_0.2.7_amd64.deb) ...
whoopsie stop/waiting
Desempaquetando whoopsie de reemplazo...
Preparando para reemplazar libwhoopsie0 0.2.5 (usando .../libwhoopsie0_0.2.7_amd64.deb) ...
Desempaquetando el reemplazo libwhoopsie0 ...
Preparando para reemplazar lsb-base 4.0-0ubuntu26 ( usando .../lsb-base_4.0-0ubuntu26.1_all.deb) ...
Desempaquetando el reemplazo lsb-base ...
Procesando activadores para ureadahead ...
ureadahead será perfilado en el próximo reinicio
Configuración de lsb-base (4.0-0ubuntu26.1)...
(Leyendo base de datos... 52666 archivos y directorios instalados actualmente.)
Preparando para reemplazar isc- dhcp-client 4.2.4-1ubuntu10 (using .../isc-dhcp-client_4.2.4-1ubuntu10.1_amd64.deb) ...
Desempaquetando isc-dhcp-client de reemplazo...
Preparando para reemplazar isc-dhcp-common 4.2.4-1ubuntu10 (usando .../isc-dhcp-common_4.2.4-1ubuntu10.1_amd64.deb) ...
Desempaquetando isc-dhcp-common de reemplazo...
Preparar ing to replace lsb-release 4.0-0ubuntu26 (using .../lsb-release_4.0-0ubuntu26.1_all.deb) ...
Desempaquetando replacement lsb-release ...
Preparándose para reemplazar python3 .2 3.2.3-6ubuntu3 (usando .../python3.2_3.2.3-6ubuntu3.1_amd64.deb) ...
Desempaquetando el reemplazo python3.2 ...
Preparando para reemplazar python3.2 -minimal 3.2.3-6ubuntu3 (usando .../python3.2-minimal_3.2.3-6ubuntu3.1_amd64.deb) ...
Desempaquetando reemplazo python3.2-minimal ...
Preparándose para replace vim 2:7.3.547-4ubuntu1 (using .../vim_2%3a7.3.547-4ubuntu1.1_amd64.deb) ...
Desempaquetando vim de reemplazo...
Preparándose para reemplazar vim-tiny 2:7.3.547-4ubuntu1 (utilizando .../vim-tiny_2%3a7.3.547-4ubuntu1.1_amd64.deb) ...
Desembalaje de reemplazo vim-tiny ...
Preparación para reemplazar vim -runtime 2:7.3.547-4ubuntu1 (using .../vim-runtime_2%3a7.3.547-4ubuntu1.1_all.deb) ...
Desempaquetando reemplazo vim-runtime ...
Preparándose para reemplazar vim-common 2:7.3.547-4ubuntu1 (utilizando .../vim-common_2%3a7.3.547-4ubuntu1.1_a md64.deb) ...
Desempaquetando reemplazo vim-common ...
Preparándose para reemplazar ubuntu-release-upgrader-core 1:0.190.1 (usando .../ubuntu-release-upgrader- core_1%3a0.190.4_all.deb) ...
Desempaquetando reemplazo ubuntu-release-upgrader-core ...
Preparando para reemplazar python3-distupgrade 1:0.190.1 (usando .../python3 -distupgrade_1%3a0.190.4_all.deb) ...
Desempaquetando reemplazo python3-distupgrade ...
Preparando para reemplazar python3-problem-report 2.6.1-0ubuntu3 (usando .../python3- problem-report_2.6.1-0ubuntu6_all.deb) ...
Desempaquetando reemplazo python3-problem-report ...
Preparando para reemplazar python3-apport 2.6.1-0ubuntu3 (usando .../python3- apport_2.6.1-0ubuntu6_all.deb) ...
Desempaquetando reemplazo python3-apport ...
Preparando para reemplazar apport 2.6.1-0ubuntu3 (usando .../apport_2.6.1-0ubuntu6_all.deb) ...
apport detenido/esperando
Desempaquetando apport de reemplazo...
Preparándose para reemplazar linux-generic 3.5.0.17.19 (usando .../linux-generic_3.5.0.18.21_amd64 .debutante ) ...
Desempaquetando reemplazo linux-generic ...
Procesando activadores para man-db ...
Procesando activadores para mime-support ...
Procesando activadores para ureadahead ...
Configurando libwhoopsie0 (0.2.7) ...
Configurando whoopsie (0.2.7) ...
whoopsie iniciar/ejecutar, proceso 7859
Configurar isc-dhcp-common (4.2.4-1ubuntu10.1) ...
Configurando isc-dhcp-client (4.2.4-1ubuntu10.1) ...
Configurando lsb-release ( 4.0-0ubuntu26.1) ...
Configurando python3.2-minimal (3.2.3-6ubuntu3.1) ...
Configurando python3.2 (3.2.3-6ubuntu3.1) ...
Configurando vim-common (2:7.3.547-4ubuntu1.1) ...
Configurando vim-runtime (2:7.3.547-4ubuntu1.1) ...
Procesando /usr/share/vim/addons/doc
Configurando vim (2:7.3.547-4ubuntu1.1) ...
Configurando vim-tiny (2:7.3.547 -4ubuntu1.1) ...
Configurando python3-distupgrade (1:0.190.4) ...
Configurando ubuntu-release-upgrader-core (1:0.190.4) ...
Configurando python3-problem-report (2.6.1-0ubuntu6) ...
Establecer configurando python3-apport (2.6.1-0ubuntu6) ...
Configurando apport (2.6.1-0ubuntu6) ...
apport start/running
Configurando linux-generic ( 3.5.0.18.21) ...
Activadores de procesamiento para libc-bin ...
Procesamiento aplazado de ldconfig ahora tiene lugar
[email protected]:~#

Como puede ver, apt-btrfs-snapshot se creó automáticamente como una instantánea de nuestro sistema (llamada @apt-snapshot-2012-11-22_11:50:38 en este ejemplo) antes de la actualización. Puedes comprobarlo con...

btrfs subvolume list /
[email protected]:~# btrfs subvolume list /
ID 256 top level 5 path @
ID 258 top level 5 path @home
ID 260 top level 5 path @apt-snapshot-2012-11-22_11:50:38
[email protected]:~#

... y:

apt-btrfs-snapshot list
[email protected]:~# apt-btrfs-snapshot list
Available snapshots:
@apt-snapshot-2012-11-22_11:50:38
[email protected]:~#

4 Reversión

Ahora supongamos que la última operación apt convirtió nuestro sistema de trabajo en uno que ya no funciona como se esperaba. Es por eso que queremos restaurar el estado anterior del sistema, es decir, queremos hacer una reversión.

Por lo tanto, montamos el sistema de archivos btrfs en una ubicación separada, p. /mnt:

mount /dev/sda1 /mnt

Ahora podemos ver nuestros subvolúmenes en la salida de:

ls -l /mnt/
[email protected]:~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 230 Nov 22 10:46 @
drwxr-xr-x 1 root root 230 Nov 22 10:46 @apt-snapshot-2012-11-22_11:50:38
drwxr-xr-x 1 root root  26 Nov 22 10:57 @home
[email protected]:~#

@apt-snapshot-2012-11-22_11:50:38 es una instantánea de nuestro sistema de archivos raíz en funcionamiento (@) antes de la operación apt. Para hacer que el sistema arranque desde esa instantánea de trabajo en lugar del subvolumen actual, renombramos @ a otra cosa y luego @apt-snapshot-2012-11-22_11:50:38 a @:

mv /mnt/@ /mnt/@_badroot
mv /mnt/@apt-snapshot-2012-11-22_11:50:38 /mnt/@

Ahora reinicia:

reboot

5 Comprobar si la reversión fue exitosa

Después del reinicio, debemos verificar si la reversión fue exitosa. Para hacer esto, repetimos la operación apt que inutilizó nuestro sistema, por ejemplo:

apt-get update
apt-get upgrade

Si la reversión fue exitosa, apt-get upgrade debería mostrar los mismos paquetes disponibles para la actualización que antes (ya que esto es solo una verificación de si la reversión fue exitosa, no vuelva a instalar las actualizaciones):

[email protected]:~# apt-get upgrade
Leyendo listas de paquetes... Terminado
Creando árbol de dependencias
Leyendo información de estado... Terminado
Se han mantenido los siguientes paquetes atrás:
  linux-headers-generic linux-image-generic
Los siguientes paquetes se actualizarán:
  apport base-files isc-dhcp-client isc-dhcp-common libwhoopsie0 linux-generic lsb -base lsb-release python3-apport python3-distupgrade python3-problem-report python3.2 python3.2-minimal
  ubuntu-release-upgrader-core vim vim-common vim-runtime vim-tiny whoopsie
19 actualizados, 0 recién instalados, 0 para eliminar y 2 no actualizados.
Necesita obtener 0 B/14,4 MB de archivos.
Después de esta operación, se utilizarán 3072 B de espacio adicional en disco.
¿Quieres continuar [S/n]? <-- n

6 Eliminar el subvolumen @ (opcional)

Si está seguro de que la reversión se realizó con éxito y ya no necesita el antiguo subvolumen @ (ahora llamado @_badroot), puede eliminarlo para liberar espacio.

mount /dev/sda1 /mnt
ls -l /mnt/
[email protected]:~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 230 Nov 22 10:46 @
drwxr-xr-x 1 root root 230 Nov 22 10:46 @_badroot
drwxr-xr-x 1 root root  26 Nov 22 10:57 @home
[email protected]:~#
btrfs subvolume delete /mnt/@_badroot
umount /mnt

7 Enlaces

  • btrfs:https://btrfs.wiki.kernel.org/index.php/Main_Page
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Recupere su sistema con el modo de usuario único en Ubuntu / Ubuntu 11.10

  2. ¿Bluetooth no funciona en Ubuntu 16.04 con el adaptador Atheros [0cf3:3004]?

  3. ¿Ubuntu 18.04 dejó de funcionar con los controladores de Nvidia?

  4. ¿Elan Touchpad no funciona en Lenovo Ideapad con Ubuntu 16.04?

  5. Configure un entorno chroot en Ubuntu con debootstrap

Cómo monitorear los recursos del sistema con Glances en Ubuntu 20.04

Trabajar con múltiples pestañas de terminal en Ubuntu

Cómo restaurar su sistema Ubuntu Linux a su estado anterior

Cómo reemplazar Gnome Screensaver con Xscreensaver en Ubuntu

Cómo sincronizar la hora del sistema con los servidores de hora de Internet en Ubuntu 20.04

Cómo formatear una partición de disco duro con BTRFS en Ubuntu 20.04