Tips en Trucs 2015

Btrfs back-uppen met Partclone

OpenSUSE 13.2 gebruikt nu standaard het bestandssysteem Btrfs voor het systeem. Om snel een systeem te herstellen, maak je na de installatie van het systeem een back-up. Daarvoor heb je onder Linux verschillende mogelijkheden. Zo gebruik ik voor documenten en instellingen van gebruikers het gerenommeerde RSync systeem. RSync is zeer handig om bestanden te synchroniseren op een andere computer of harde schijf. Back-ups die met synchronisatie werken, zijn vooral interessant voor het maken van reservekopieën van bestanden die nu en dan aangepast worden. Bij het uitvoeren van een synchronisatie worden enkel de sedert te laatste synchronisatie aangepaste bestanden gekopieerd naar de herstelmap op een andere computer of harde schijf. Het grote voordeel van synchronisatie is dat je in de herstelmap alle bestanden afzonderlijk kunt benaderen en gebruiken om het originele bestand te herstellen. Het grote nadeel van synchronisatie is dat het terugzetten van alle bestanden om een systeem naar een oorspronkelijke staat te herstellen enorm veel tijd vraagt (er wordt namelijk per bestand gewerkt).

Je kunt een back-up ook maken door een image van een partitie te maken. Daarbij worden alle gegevens van de partitie in één bestand opgeslagen. Het grote nadeel van een image back-up is dat je de afzonderlijke bestanden niet kunt inkijken of terugzetten. Het grote voordeel is dat je met een image back-up in een paar minuten een volledig systeem kunt herstellen.

Het Btrfs bestandssysteem bevat functies om een snapshot van een partitie te maken, maar deze gebruikt een gelijkaardige manier als RSync (m.a.w. het synchroniseren van aangepaste bestanden). En dit neemt voor het maken van een complete image veel tijd in beslag. De nieuwe snapshot functie van Btrfs werkt wel zeer goed om terug te keren in de tijd, bijvoorbeeld naar een toestand voor de installatie van een bepaald programma. OpenSUSE 13.2 blijkt bij elke installatie via zypper of YaST zo'n snapshot aan te maken. Maar om een volledige image aan te maken is de snapshot functie van Btrfs te tijdrovend.

Partclone

Voor image back-ups gebruik ik Partclone. Dit programma is gebruiksvriendelijk, snel en ondersteunt verschillende bestandssystemen, waaronder Btrfs. Nu bleek de versie (0.2.58) die in de softwarebronnen van openSUSE staat niet betrouwbaar met btrfs partities om te kunnen gaan. Dit is vooral te wijten aan het feit dat Btrfs zeer recent nog grote veranderingen heeft ondergaan. Deze aanpassingen zijn echter nog niet in de stabiele versie van partclone opgenomen. De enige manier om met partclone betrouwbare image back-ups te maken, is het zelf compileren van een testversie van partclone. Het gaat hier inderdaad om een testversie, maar bij het grondig testen bij zowel het aanmaken van het imagebestand als het terugzetten ervan bleek al vlug dat de testversie van partclone perfect samenwerkt met de Btrfs versie die in openSUSE 13.2 wordt gebruikt. De testversie van partclone is volop in ontwikkeling, juist op het gebied van de ondersteuning van btrfs partities.

Partclone compileren

Aangezien mijn back-up systeem geen grafisch omgeving heeft, gebeurt alles in een terminal. Het downloaden van de partclone testversie die goed samenwerkt met de Btrfs versie in openSUSE 13.2 kan je met de volgende opdracht downloaden:

dany@linux-oj7m:~> wget http://downloads.sourceforge.net/project/partclone/testing/partclone_0.2.75.orig.tar.gz
--2015-01-17 18:57:24--  http://downloads.sourceforge.net/project/partclone/testing/partclone_0.2.75.orig.tar.gz                                                
Herleiden van downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59                                                                            
Verbinding maken met downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... verbonden.                                                      
HTTP-verzoek is verzonden; wachten op antwoord... 302 Found                     
Locatie: http://softlayer-ams.dl.sourceforge.net/project/partclone/testing/partclone_0.2.75.orig.tar.gz [volgen...]                                             
--2015-01-17 18:57:25--  http://softlayer-ams.dl.sourceforge.net/project/partclone/testing/partclone_0.2.75.orig.tar.gz
Herleiden van softlayer-ams.dl.sourceforge.net (softlayer-ams.dl.sourceforge.net)... 37.58.69.140
Verbinding maken met softlayer-ams.dl.sourceforge.net (softlayer-ams.dl.sourceforge.net)|37.58.69.140|:80... verbonden.
HTTP-verzoek is verzonden; wachten op antwoord... 200 OK
Lengte: 603412 (589K) [application/x-gzip]
Wordt opgeslagen als: ‘partclone_0.2.75.orig.tar.gz’

partclone_0.2.75.or 100%[=====================>] 589,27K  1,20MB/s   in 0,5s   

2015-01-17 18:57:25 (1,20 MB/s) - '‘partclone_0.2.75.orig.tar.gz’' opgeslagen [603412/603412]

Het spreekt voor zich, dat je deze versie ook vanaf de partclone sourceforge pagina kunt downloaden.

Na het downloaden pak je de broncode van partclone met de volgende opdracht uit:

dany@linux-oj7m:~> tar xvf partclone_0.2.75.orig.tar.gz
partclone-0.2.75/
partclone-0.2.75/.gitattributes
partclone-0.2.75/.gitignore
partclone-0.2.75/ABOUT-NLS
partclone-0.2.75/AUTHORS
partclone-0.2.75/COPYING
partclone-0.2.75/ChangeLog
partclone-0.2.75/INSTALL
partclone-0.2.75/Makefile.am
partclone-0.2.75/Makefile.in
partclone-0.2.75/NEWS
partclone-0.2.75/README
partclone-0.2.75/README.Packages/
...
partclone-0.2.75/TODO
partclone-0.2.75/aclocal.m4
partclone-0.2.75/compile
partclone-0.2.75/config.guess
partclone-0.2.75/config.h.in
partclone-0.2.75/config.rpath
partclone-0.2.75/config.sub
partclone-0.2.75/configure
partclone-0.2.75/configure.ac
partclone-0.2.75/depcomp
partclone-0.2.75/docs/
...
partclone-0.2.75/src/btrfs/
partclone-0.2.75/src/btrfs/bitops.h
partclone-0.2.75/src/btrfs/btrfs-list.c
partclone-0.2.75/src/btrfs/btrfs-list.h
partclone-0.2.75/src/btrfs/btrfsck.h
partclone-0.2.75/src/btrfs/crc32c.c
partclone-0.2.75/src/btrfs/crc32c.h
partclone-0.2.75/src/btrfs/ctree.c
partclone-0.2.75/src/btrfs/ctree.h
partclone-0.2.75/src/btrfs/dir-item.c
partclone-0.2.75/src/btrfs/disk-io.c
partclone-0.2.75/src/btrfs/disk-io.h
partclone-0.2.75/src/btrfs/extent-cache.c
partclone-0.2.75/src/btrfs/extent-cache.h
partclone-0.2.75/src/btrfs/extent-tree.c
partclone-0.2.75/src/btrfs/extent_io.c
partclone-0.2.75/src/btrfs/extent_io.h
partclone-0.2.75/src/btrfs/file-item.c
partclone-0.2.75/src/btrfs/free-space-cache.c
partclone-0.2.75/src/btrfs/free-space-cache.h
partclone-0.2.75/src/btrfs/hash.h
partclone-0.2.75/src/btrfs/inode-item.c
partclone-0.2.75/src/btrfs/inode-map.c
partclone-0.2.75/src/btrfs/ioctl.h
partclone-0.2.75/src/btrfs/kerncompat.h
partclone-0.2.75/src/btrfs/list.h
partclone-0.2.75/src/btrfs/list_sort.c
partclone-0.2.75/src/btrfs/list_sort.h
partclone-0.2.75/src/btrfs/math.h
partclone-0.2.75/src/btrfs/print-tree.c
partclone-0.2.75/src/btrfs/print-tree.h
partclone-0.2.75/src/btrfs/qgroup-verify.c
partclone-0.2.75/src/btrfs/qgroup-verify.h
partclone-0.2.75/src/btrfs/qgroup.c
partclone-0.2.75/src/btrfs/qgroup.h
partclone-0.2.75/src/btrfs/radix-tree.c
partclone-0.2.75/src/btrfs/radix-tree.h
partclone-0.2.75/src/btrfs/raid6.c
partclone-0.2.75/src/btrfs/rbtree-utils.c
partclone-0.2.75/src/btrfs/rbtree-utils.h
partclone-0.2.75/src/btrfs/rbtree.c
partclone-0.2.75/src/btrfs/rbtree.h
partclone-0.2.75/src/btrfs/rbtree_augmented.h
partclone-0.2.75/src/btrfs/repair.c
partclone-0.2.75/src/btrfs/repair.h
partclone-0.2.75/src/btrfs/root-tree.c
partclone-0.2.75/src/btrfs/send-stream.c
partclone-0.2.75/src/btrfs/send-stream.h
partclone-0.2.75/src/btrfs/send-utils.c
partclone-0.2.75/src/btrfs/send-utils.h
partclone-0.2.75/src/btrfs/send.h
partclone-0.2.75/src/btrfs/transaction.h
partclone-0.2.75/src/btrfs/ulist.c
partclone-0.2.75/src/btrfs/ulist.h
partclone-0.2.75/src/btrfs/utils-lib.c
partclone-0.2.75/src/btrfs/utils.c
partclone-0.2.75/src/btrfs/utils.h
partclone-0.2.75/src/btrfs/uuid-tree.c
partclone-0.2.75/src/btrfs/version.h
partclone-0.2.75/src/btrfs/volumes.c
partclone-0.2.75/src/btrfs/volumes.h
partclone-0.2.75/src/btrfsclone.c
partclone-0.2.75/src/btrfsclone.h
...
partclone-0.2.75/toolbox

Daarna installeer je de ontwikkelomgeving om partclone te compileren:

dany@linux-oj7m:~> sudo zypper install -t pattern devel_basis
root's password:
Ophalen van metadata uit installatiebron 'openSUSE-13.2-Update' .........[klaar]
Cache van bron 'openSUSE-13.2-Update' bouwen ............................[klaar]
Ophalen van metadata uit installatiebron 'openSUSE-13.2-Update-Non-Oss' .[klaar]
Cache van bron 'openSUSE-13.2-Update-Non-Oss' bouwen ....................[klaar]
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Afhankelijkheden tussen pakketten oplossen...

De volgende 107 NIEUWE pakketten zullen worden geïnstalleerd:
  atk-devel autoconf automake bin86 binutils-devel bison cairo-devel cvs 
  damageproto-devel e2fsprogs-devel fixesproto-devel flex fontconfig-devel 
  freetype2-devel gcc gcc48 gcc48-c++ gcc48-info gcc-c++ gcc-info gdbm-devel 
  gdk-pixbuf-devel gettext-tools glib2-devel glibc-devel glibc-info gmp-devel 
  gperf gtk2-devel harfbuzz-devel kbproto-devel libaio-devel libapparmor-devel 
  libapr1 libapr-util1 libart_lgpl_2-2 libart_lgpl-devel libasan0 libatomic1 
  libblkid-devel libcairo-script-interpreter2 libcom_err-devel libdb-4_8-devel 
  libdrm-devel libexpat-devel libext2fs-devel libgcj48 libgcj48-devel 
  libgcj48-jar libgcj_bc1 libgcj-devel libgmpxx4 libicu-devel libitm1 libosip2 
  libosip2-devel libpcrecpp0 libpcreposix0 libpixman-1-0-devel 
  libpng16-compat-devel libpng16-devel libserf-1-1 libstdc++48-devel 
  libstdc++-devel libtool libtsan0 libuuid-devel libX11-devel libXau-devel 
  libxcb-devel libxcb-dpms0 libxcb-record0 libxcb-res0 libxcb-screensaver0 
  libxcb-xevie0 libxcb-xf86dri0 libxcb-xinerama0 libxcb-xprint0 libxcb-xvmc0 
  libXdamage-devel libXext-devel libXfixes-devel libXft-devel libXrender-devel 
  libxshmfence-devel libXxf86vm-devel linux-glibc-devel m4 makeinfo 
  Mesa-libEGL-devel Mesa-libGL-devel ncurses-devel openldap2-devel pam-devel 
  pango-devel patch patterns-openSUSE-devel_basis pcre-devel 
  pthread-stubs-devel renderproto-devel subversion tack typelib-1_0-Gtk-2_0 
  xextproto-devel xf86vidmodeproto-devel xproto-devel zlib-devel 

Het volgende NIEUWE patroon zal worden geïnstalleerd:
  devel_basis 

De volgende 20 aanbevolen pakketten zijn automatisch geselecteerd:
  bin86 binutils-devel e2fsprogs-devel gcc-c++ gcc-info glibc-info gmp-devel 
  gperf libaio-devel libapparmor-devel libdb-4_8-devel libgcj48-jar 
  libgcj-devel libosip2-devel libpng16-compat-devel libstdc++-devel 
  openldap2-devel pam-devel patch subversion 

107 nieuw te installeren pakketten.
Totale downloadgrootte: 71,6 MiB. Reeds in de cache: 0 B  Na de operatie zal 
aanvullend 343,2 MiB worden gebruikt.
Doorgaan? [j/n/? alle opties tonen] (j): 
pakket gcc48-info-4.8.3+r212056-2.2.4.noarch wordt opgehaald
                                        (1/107),   2,0 MiB (  2,0 MiB uitgepakt)
Ophalen: gcc48-info-4.8.3+r212056-2.2.4.noarch.rpm ..........[klaar (1,3 MiB/s)]
pakket glibc-info-2.19-16.2.5.noarch wordt opgehaald
                                        (2/107), 908,4 KiB (909,5 KiB uitgepakt)
Ophalen: glibc-info-2.19-16.2.5.noarch.rpm ..............................[klaar]
...
pakket libgcj-devel-4.8-7.1.2.x86_64 wordt opgehaald
                                        (107/107),   4,8 KiB (   72 B uitgepakt)
Ophalen: libgcj-devel-4.8-7.1.2.x86_64.rpm ..............................[klaar]
Controleren op conflicten tussen bestanden: .............................[klaar]
(  1/107) Installeert: gcc48-info-4.8.3+r212056-2.2.4 ...................[klaar]
(  2/107) Installeert: glibc-info-2.19-16.2.5 ...........................[klaar]
(  3/107) Installeert: linux-glibc-devel-3.16-2.1.7 .....................[klaar]
...
(107/107) Installeert: libgcj-devel-4.8-7.1.2 ...........................[klaar]

Open de map met de partclone broncode:

dany@linux-oj7m:~> cd partclone-0.2.75

Configureer de broncode om partclone te compileren met btrfs ondersteuning:

dany@linux-oj7m:~/partclone-0.2.75> ./configure --enable-btrfs
configure: loading site script /usr/share/site/x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
/home/dany/partclone-0.2.75/missing: Unknown `--is-lightweight' option
Try `/home/dany/partclone-0.2.75/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether NLS is requested... yes
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for ld used by GCC... /usr/x86_64-suse-linux/bin/ld
checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyCurrent... no
checking for GNU gettext in libc... yes
checking whether to use NLS... yes
checking where the gettext function comes from... libc
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking for rm... /usr/bin/rm
checking whether ln -s works... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for UUID... yes
checking for pthread_create in -lpthread... yes
checking blkid/blkid.h usability... yes
checking blkid/blkid.h presence... no
configure: WARNING: blkid/blkid.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: blkid/blkid.h: proceeding with the compiler's result
checking for blkid/blkid.h... yes
checking for initscr in -ltinfo... no
configure: WARNING: *** tinfo library (libtinfo) not found
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating fail-mbr/Makefile
config.status: creating po/Makefile.in
config.status: creating docs/Makefile
config.status: creating tests/Makefile
config.status: creating config.h
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
config.status: executing depfiles commands

Support File System:
ext2/3/4...... no, 
reiserfs...... no, 
reiser4....... no, 
xfs........... no, version unknown, suggest 3.1.1
ntfs.......... no, 
fat12/16/32... no, 
exfat......... no, 
hfs plus...... no, 
ufs .......... no, 
vmfs ......... no, 
jfs .......... no, 
btrfs......... yes, Btrfs v3.17.3
minix......... no, 
f2fs.......... no,

Compileer partclone:

dany@linux-oj7m:~/partclone-0.2.75> make
make  all-recursive
make[1]: Map '/home/dany/partclone-0.2.75' wordt binnengegaan
Making all in po
make[2]: Map '/home/dany/partclone-0.2.75/po' wordt binnengegaan
make[2]: Er hoeft niets gedaan te worden voor 'all'.
make[2]: Map '/home/dany/partclone-0.2.75/po' wordt verlaten
Making all in src
make[2]: Map '/home/dany/partclone-0.2.75/src' wordt binnengegaan
depbase=`echo info.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_FILE_OFFSET_BITS=64  -D_FILE_OFFSET_BITS=64   -g -O2 -Wall -MT info.o -MD -MP -MF $depbase.Tpo -c -o info.o info.c &&\
mv -f $depbase.Tpo $depbase.Po
info.c: In function ‘info_options’:
info.c:82:3: warning: implicit declaration of function ‘print_version’ [-Wimplicit-function-declaration]
   print_version();
   ^
depbase=`echo partclone.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_FILE_OFFSET_BITS=64  -D_FILE_OFFSET_BITS=64   -g -O2 -Wall -MT partclone.o -MD -MP -MF $depbase.Tpo -c -o partclone.o partclone.c &&\
mv -f $depbase.Tpo $depbase.Po
...
gcc -Wall -Werror -m32 -nostdlib -o fail-mbr.o fail-mbr.S
gcc -Os -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -falign-jumps=1 -falign-loops=1 -falign-functions=1 -mno-mmx -mno-sse -mno-sse2 -mno-3dnow -fno-dwarf2-cfi-asm -fno-asynchronous-unwind-tables -m32 -fno-stack-protector -mno-stack-arg-probe -Werror -Wno-trampolines -DUSE_ASCII_FAILBACK=1 -DHAVE_UNIFONT_WIDTHSPEC=1  -mrtd -mregparm=3       -fno-builtin   -m32 -Wl,--build-id=none   -nostdlib -Wl,-N,-S -Wl,-N -Wl,-Ttext,0x7C00   -o fail-mbr.image fail-mbr.o
objcopy  -O binary  --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .reginfo -R .rel.dyn fail-mbr.image fail-mbr.bin
make[2]: Map '/home/dany/partclone-0.2.75/fail-mbr' wordt verlaten
make[2]: Map '/home/dany/partclone-0.2.75' wordt binnengegaan
make[2]: Map '/home/dany/partclone-0.2.75' wordt verlaten
make[1]: Map '/home/dany/partclone-0.2.75' wordt verlaten

Installeer partclone:

dany@linux-oj7m:~/partclone-0.2.75> sudo make install
root's password:
Making install in po
make[1]: Map '/home/dany/partclone-0.2.75/po' wordt binnengegaan
/usr/bin/mkdir -p /usr/local/share
installing zh_TW.gmo as /usr/local/share/locale/zh_TW/LC_MESSAGES/partclone.mo
installing fr_FR.gmo as /usr/local/share/locale/fr_FR/LC_MESSAGES/partclone.mo
installing vi.gmo as /usr/local/share/locale/vi/LC_MESSAGES/partclone.mo
if test "partclone" = "gettext-tools"; then \
  /usr/bin/mkdir -p /usr/local/share/gettext/po; \
  for file in Makefile.in.in remove-potcdate.sin quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot   Makevars.template; do \
    /usr/bin/install -c -m 644 ./$file \
                    /usr/local/share/gettext/po/$file; \
  done; \
  for file in Makevars; do \
    rm -f /usr/local/share/gettext/po/$file; \
  done; \
else \
  : ; \
fi
make[1]: Map '/home/dany/partclone-0.2.75/po' wordt verlaten
Making install in src
make[1]: Map '/home/dany/partclone-0.2.75/src' wordt binnengegaan
srcdir=.. builddir=.. ../toolbox --update-version
../toolbox: line 112: git: command not found
../toolbox: line 113: git: command not found
not git repository?
make[2]: Map '/home/dany/partclone-0.2.75/src' wordt binnengegaan
srcdir=.. builddir=.. ../toolbox --update-version
../toolbox: line 112: git: command not found
../toolbox: line 113: git: command not found
not git repository?
 /usr/bin/mkdir -p '/usr/local/sbin'
  /usr/bin/install -c partclone.info partclone.dd partclone.restore partclone.chkimg partclone.imager partclone.ntfsfixboot partclone.btrfs '/usr/local/sbin'
make  install-exec-hook
make[3]: Map '/home/dany/partclone-0.2.75/src' wordt binnengegaan
make[3]: Er hoeft niets gedaan te worden voor 'install-exec-hook'.
make[3]: Map '/home/dany/partclone-0.2.75/src' wordt verlaten
make[2]: Er hoeft niets gedaan te worden voor 'install-data-am'.
make[2]: Map '/home/dany/partclone-0.2.75/src' wordt verlaten
make[1]: Map '/home/dany/partclone-0.2.75/src' wordt verlaten
Making install in docs
make[1]: Map '/home/dany/partclone-0.2.75/docs' wordt binnengegaan
make[2]: Map '/home/dany/partclone-0.2.75/docs' wordt binnengegaan
make[2]: Er hoeft niets gedaan te worden voor 'install-exec-am'.
 /usr/bin/mkdir -p '/usr/local/share/man/man8'
 /usr/bin/install -c -m 644 partclone.info.8 partclone.chkimg.8 partclone.dd.8 partclone.restore.8 partclone.8 partclone.imager.8 partclone.btrfs.8 '/usr/local/share/man/man8'
make[2]: Map '/home/dany/partclone-0.2.75/docs' wordt verlaten
make[1]: Map '/home/dany/partclone-0.2.75/docs' wordt verlaten
Making install in tests
make[1]: Map '/home/dany/partclone-0.2.75/tests' wordt binnengegaan
make[2]: Map '/home/dany/partclone-0.2.75/tests' wordt binnengegaan
make[2]: Er hoeft niets gedaan te worden voor 'install-exec-am'.
make[2]: Er hoeft niets gedaan te worden voor 'install-data-am'.
make[2]: Map '/home/dany/partclone-0.2.75/tests' wordt verlaten
make[1]: Map '/home/dany/partclone-0.2.75/tests' wordt verlaten
Making install in fail-mbr
make[1]: Map '/home/dany/partclone-0.2.75/fail-mbr' wordt binnengegaan
make[2]: Map '/home/dany/partclone-0.2.75/fail-mbr' wordt binnengegaan
make[2]: Er hoeft niets gedaan te worden voor 'install-exec-am'.
 /usr/bin/mkdir -p '/usr/local/share/partclone/'
 /usr/bin/install -c -m 644 fail-mbr.bin '/usr/local/share/partclone/'
make[2]: Map '/home/dany/partclone-0.2.75/fail-mbr' wordt verlaten
make[1]: Map '/home/dany/partclone-0.2.75/fail-mbr' wordt verlaten
make[1]: Map '/home/dany/partclone-0.2.75' wordt binnengegaan
make[2]: Map '/home/dany/partclone-0.2.75' wordt binnengegaan
make[2]: Er hoeft niets gedaan te worden voor 'install-exec-am'.
make[2]: Er hoeft niets gedaan te worden voor 'install-data-am'.
make[2]: Map '/home/dany/partclone-0.2.75' wordt verlaten
make[1]: Map '/home/dany/partclone-0.2.75' wordt verlaten

Partclone gebruiken

Om een back-up te maken of terug te zetten met partclone, start je de computer vanaf een Live CD, DVD, USB-stick of een speciaal aangemaakte back-up partitie. Zo kan je een image maken van een partitie die niet gekoppeld is (niet in gebruik is). Om een image te maken van 6de partitie op te eerste schijf, gebruik je de volgende opdracht:

dany@linux-oj7m:~> su
Wachtwoord:
linux-oj7m:/home/dany # partclone.btrfs --clone --source /dev/sda6 | gzip -c > /root/backup/linux.partclone.gz

De image wordt daarbij met gzip gecomprimeerd. Dezelfde btrfs partitie kan je herstellen door de opdracht in onderstaande afbeelding als root gebruiker uit te voeren. Let daarbij op de benodigde tijd (uitgevoerd op een computer met SSD schijf).

Partclone restore

Opmerkingen

Aparte bootpartitie

Werk met een aparte bootpartitie, die je enkel configureert vanuit één van de twee besturingssystemen (back-up systeem of uw Linux systeem). Schakel bij de installatie bij het partitioneren het gebruik van twee subvolumes op de Btrfs systeempartitie uit voor de /boot/ map, je gebruikt immers een aparte bootpartitie die geen deel uitmaakt van het systeem.

De aparte bootpartitie zorgt voor het opstarten van alle aanwezige besturingssystemen, krijgt updates van één van de besturingssystemen waardoor je geen conflicten krijgt.

UEFI en Secure Boot

Bij mijn weten is er nog geen enkele RescueCD met partclone waarmee je een met Secure Boot beveiligd systeem kunt opstarten. M.a.w. je moet dan opstarten met een openSUSE 13.2 live DVD (USB-stick) of werken met een opstartbare back-uppartitie.