Chci zkopírovat svazek nebo celý disk jinam. Které příkazy se na to dají použít?
Možností je mnoho, jsou různě rychlé a mají různé výhody a nevýhody.
cp -a /bin /dev /home /root /var /boot /etc /lib /sbin /usr /mnt/disk2Znamená to zkopírovat vyjmenované adresáře do svazku připojeného do /mnt/disk2. Nekopírují se např. /proc, /mnt nebo lost+found. U /dev je kopírování sporné a může vést k neočekávaným problémům. Koncepčně nejsprávnější je použít archivovací programy tar nebo cpio:
tar cf - |(cd cil; tar xf -) cd /zdroj find . -print | cpio -pmd /cil (nebo lépe) find . -print0 | cpio -pmdaV0 /cildump/restore: zachovává díry v děravých souborech, zachovává ext2 atributy.
mount /dev/hdc1 /mnt/hdc1 dump -0uf /dev/hda1 | (cd /mnt/hdc1 ; restore -rvf - )Pokud mají disky stejnou geometrii, mohou se zkopírovat na velmi nízké úrovni:
dd if=/dev/hdc of=/dev/hddU živého filesystému mohou nastat nepředvídatelné potíze - ideální je init 1, nebo aspoň remount na ro. Můžete také problém obejít a vše nechat při starém, jenom změnit záznamy v /etc/fstab. V Hard-Disk-Upgrade mini HOWTO je velmi podrobný návod (i na webu).
Na co je třeba dát pozor:
lilo -r /mnt/disk2U příkazu tar je vhodné použít přepínače --preserve*. Při běžném použití bude cp -a rychlejší než dvojí spouštění taru. Použít dump na živý filesystém je značně rizikové. Jednak obchází jádro a může tudíž číst data neodpovídající metadatům, jednak běžící programy mohou měnit data během kopírování. Ideální je přejít do runlevelu 1, stačit by měl remount na read-only:
mount -o remount,ro /dev/hda1Pro prosté kopírování bez vytváření adresářů je třeba použít složitější konstrukci, aby se zkopírovaly i soubory s tečkou, ev. použít find:
cp -a /zdroj/* /zdroj/.[^.]* /zdroj/..?* /cil cd /zdroj; cp -a . /cil cp -a /zdroj/. /cil