Kopieer de bestanden vanaf de oude naar de nieuwe disk

Wellicht dat je de single-user modus wilt activeren voordat je de disk gaat kopiëren, om de systeemdaemons af te sluiten en de status van de logs te behouden, en om te voorkomen dat andere gebruikers in kunnen loggen:

/sbin/telinit 1

Bij het kopiëren van de harddisk, wil je vast alle directory's en bestanden, waaronder links kopiëren.

Echter wat je niet wilt is de directory /new-disk kopiëren, gezien hiermee de nieuwe disk zelf zou worden gekopieerd!

Bovendien wil je de directory /proc op de nieuwe disk aanmaken, maar je wilt de inhoud ervan niet kopiëren: /proc is een virtueel bestandssysteem en het bevat geen daadwerkelijke bestanden, maar in plaats daarvan informatie over de actieve processen op het systeem.

Er zijn drie verschillende manieren om de oude naar de nieuwe disk te kopiëren. Dit kan wel een tijdje duren, vooral als je een grote disk of weinig geheugen hebt. Je kunt er van uitgaan dat je zo'n 10 Mb per minuut en mogelijk veel meer zult kunnen kopiëren.

Je kunt de voortgang van het kopieerprojes volgen door gebruik te maken van de opdracht df vanaf een andere terminal. Probeer watch df of watch ls -l /new-disk om een verslag te zien te krijgen welke elke twee seconde wordt bijgewerkt; druk opCtrl-C voor het beëindigen van de weergave. Wees je er van bewust dat de uitvoering van het programma watch zelf het kopiëren vertraagt.

cp -ax / /new-disk

Dit is de eenvoudigste methode, maar zal alleen werken, als je oorspronkelijke Linux systeem zich bevindt op een enkele diskpartitie.

De optie -a behoudt het oorspronkelijke systeem zoveel als maar mogelijk is. De optie -x beperkt cp tot een enkel bestandssysteem; dit is noodzakelijk om te voorkomen dat de directory's /new-disk en /proc worden gekopieerd.

Alleen voor SuSE. Alleen bij deze methode moet je ook de directory /dev/pts op de nieuwe disk aanmaken. Gebruik hiervoor de opdracht mkdir /new-disk/dev/pts".

Note

Bij het gebruik van de optie -x zullen recente versies van cp de directory's /new-disk/new-disk en /new-disk/proc aanmaken, waarbij de directory's leeg blijven. Als deze directory's worden aangemaakt, zou je /new-disk/new-disk kunnen verwijderen en /new-disk/proc behouden.

cd / && echo cp -a `/bin/ls -1Ab | egrep -v "^new-disk$|^proc$"` /new-disk | sh

(schrijf dit in z'n geheel op één regel)

Dit gaat naar de rootdirectory en kopieert vervolgens alle bestanden en directory's, behalve /new-disk en /proc naar /new-disk. De eerste optie na ls is het getal 1, niet de letter L!

Onder alle omstandigheden zou de volgende opdracht moeten werken.

cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin /tmp /usr /var /new-disk

(schrijf dit in z'n geheel op één regel)

De laatste directory /new-disk, is de bestemming voor de opdracht cp. Alle andere directory's zijn de bronnen. Daarom kopiëren we alle directory die we opgeven naar /new-disk.

Bij deze methode, geef je simpelweg zelf op welke directory's je wilt kopiëren. Hier hebben we alle directory's opgegeven, behalve /new-disk en /proc. Als je om wat voor reden dan ook de andere methoden niet kunt gebruiken, dan kun je nog altijd deze opdracht gebruiken om handmatig de directory's op te geven die je wilt kopiëren.

Alleen bij deze methoden, moet je een andere opdracht voor het kopiëren gebruiken als er bestanden in de directory root zelf voorkomen. In het bijzonder is dit vereist bij de Debian en Slackware distributies, gezien deze distributies bestanden in de rootdirectory plaatsen:

cp -dp /* /.* /new-disk

In eerdere versies van deze Mini How-To stond dat je ook de opdracht tar kon gebruiken om de disk te kopiëren, maar in deze methoden werd een fout aangetroffen. Er bestaan uiteraard veel andere manieren om de disks te kopiëren, maar deze drie zijn het eenvoudigst, snelst en meest betrouwbaar.

Na het gebruik van één van deze drie methoden, moet je ook de directory /proc nog op de nieuwe disk aanmaken, als deze nog niet voorkomt:

mkdir /new-disk/proc

Als je dat wilt kun je nu de bestandsstructuur op de nieuwe disk verifiëren:

umount /new-disk
fsck.ext2 -f /dev/hdb1
mount -t ext2 /dev/hdb1 /new-disk

Komt op de nieuwe disk meer dan één partitie voor, ontkoppel deze dan voor uitvoering van de opdracht fsck.ext2: in het eerdere genoemde voorbeeld, zou je dan eerst partities op het 3e niveau ontkoppelen, vervolgens de partities op het 2e niveau en als laatste de partitie op het 1e niveau.

Je kunt de twee disks ook nog met elkaar vergelijken, om er zeker van te zijn dat de bestanden correct werden gekopieerd:

find / -path /proc -prune -o -path /new-disk -prune -o -xtype f -exec cmp {} /new-disk{} \;

(schrijf dit in z'n geheel op één regel)

Alleen voor Slackware. In een basisinstallatie van Slackeware (alleen de "A" series) is de opdracht cmp niet opgenomen, dus je zult deze opdracht niet uit kunnen voeren als je slechts de basisbestanden hebt geïnstalleerd. De opdracht cmp komt voor in de "AP1" series.)

Hiermee zullen alleen reguliere bestanden worden vergeleken, niet de character en block special files (in de /dev directory), sockets, enz., gezien de opdracht cmp daar niet correct mee werkt. We verwelkomen suggesties in hoe deze "speciale" bestanden te verifiëren.