Portál AbcLinuxu, 10. května 2025 01:01
Řešení dotazu:
Přimountovat oba, současný read-only, a zkopírovat pomocí 'cp -a
'.
Případně je-li nový oddíl aspoň tak velký jako starý (a chcete použít stejný filesystém), můžete zkopírovat pomocí dd
celý obsah zařízení a pak použít odpovídající nástroj pro zvětšení filesystému (resize2fs
, resize_reiserfs
, xfs_growfs
, mount -o remount,resize
).
Mimochodem, unixové filesystémy jsou case sensitive, takže /HOME
(což píšete) je něco úplně jiného než /home
(což máte nejspíš na mysli).
můj postup: 1. vytvořit oddíl se souborovým systémem na novém disku 2. zkopírovat data ze starého disku na nový (cd /home/; find . -depth -print0 | cpio --null --sparse -pvd /cesta/kde/je/disk/pripojen;) 3. upravit /etc/fstab 4. remount nebo rebootten příkaz na kopírování je odsud: http://embraceubuntu.com/2006/01/29/move-home-to-its-own-partition/
Řekněme, že jako /home
máte /dev/sdb1
a na novém disku chcete použít /dev/sdc1
. První varianta:
mount -o remount,ro /home mkdir /mnt/tmp # zvolit podle typu filesystému: # mke2fs -j -m 0 /dev/sdc1 # mkreiserfs /dev/sdc1 # mkfs.xfs /dev/sdc1 # jfs_mkfs /dev/sdc1 # mke2fs -t ext4 -m 0 /dev/sdc1 mount /dev/sdc1 /mnt/tmp cp -a /home/* /mnt/tmp/ umount /mnt/tmp(Tady předpokládáme, že v kořeni
/home
nejsou skryté soubory nebo adresáře.) Druhá varianta:
if [ `cat /sys/block/sdb/sdb1/size` -gt `cat /sys/block/sdc/sdc1/size` ]; then echo "stop!!!" >&2 else dd if=/dev/sdb1 of=/dev/sdc1 ## podle typu filesystému: ## ext3/ext4: # resize2fs /dev/sdc1 ## reiserfs: # resize_reiserfs /dev/sdc1 ## XFS: # mkdir /mnt/tmp # mount /dev/sdc1 /mnt/tmp # xfs_growfs /mnt/tmp # umount /mnt/tmp ## JFS: # mkdir /mnt/tmp # mount /dev/sdc1 /mnt/tmp # mount -o remount,resize /mnt/tmp # umount /mnt/tmp fi
Jen ve vlastním zájmu nic z toho nezkoušejte, dokud nebudete vědět, co konkrétně jednotlivé příkazy dělají, a nerozmyslíte si, jestli je to opravdu přesně to, co chcete.
/home je /dev/sdb2typ Ext3 na novém disku použiju:
/dev/sdctyp Ext3 protože v kořenu /home jsou skryté adresáře použiju tedy variantu č 2 ? a bude to tedy:
if [ `cat /sys/block/sdb/sdb2/size` -gt `cat /sys/block/sdc/sdc/size` ]; then echo "stop!!!" >&2 else dd if=/dev/sdb2 of=/dev/sdc resize2fs /dev/sdc1 fi
Dělat filesystém přímo na disku je sice možné, ale moc místa tím neušetříte a tu a tam bude něco prskat, že na /dev/sdc
není platná tabulka rozdělení. Takže bych spíš ohnul hřbet, udělal tam jeden oddíl přes celý disk a filesystém vytvořil na něm. Ale to, co píšete, bude fungovat taky.
Kvůli skrytým adresářům v kořeni /home
(sice nechápu, kde se tam vzaly, ale to je vaše věc) nemusíte nutně používat druhou variantu, jen je potřeba zkopírovat i ty (wildcard je nevezme), takže je buď můžete explicitně vyjmenovat nebo zkusit /home/.*
(ale nejsem si stoprocentně jistý, jak to naloží s .
a ..
).
cp -va
', ať máte co sledovat. :-)
Výhodou mc je progress bar, který tak rádi někteří uživatelé sledujíTaky může dát
df -H
a uvidí, kolik už má nakopírováno.
A kdyby chtěl kopírovat ne catem, ale přes dd
, tak tomu se zase dá poslat SIGUSR1
.
sudo su mount -o remount,ro /home mkdir /mnt/tmp mke2fs -t ext3 -m 0 /dev/sdc mount /dev/sdc /mnt/tmp shopt -s dotglob cp -a /home/* /mnt/tmp/a při korírování to vždacky hodilo chyby pro některé soubory a nezkopírovalo to všechno a navíc se to zaseklo takže jsem se nikam nedobral.
Kvůli skrytým adresářům v kořeni /home (sice nechápu, kde se tam vzaly, ale to je vaše věc)adresář se jmenuje .ecryptfs zkusil jsem teda mc přeskákal jsem spoustu chybových hlašení jako
no such file, nelze provést stat Permission denied,apod. a pak hromadu červených okýnek kde jde přečíst jen nahoře Chyba a dole přeskočit/zrušit mezi tím moc písmenek a čísel dohromady.Takže tudy asi taky cesta nevede.
a při korírování to vždacky hodilo chyby pro některé souboryMožná by bylo dobré sem ty chyby uvést a případně říct, u jakého souboru nastaly (tipuji to na
.gvfs
).
no such fileTo je divný, skutečně na ten oddíl žádná aplikace nehrabe? Tohle by totiž vypadalo jako že ti něco maže soubory pod rukama.
Permission deniedKopíroval jsi předpokládám jako root.
adresář se jmenuje .ecryptfsŠifrovaný domovský adresář by pak měl být během kopírování odpojený, aby se kopírovala pouze ta zašifrovaná data a ne to rozšifrované. Já bych to kdyžtak místo zkopírování zkusil rsyncnout
rsync -avhP --numeric-ids --delete /home/* /mnt/tmp/
, když to necháš doběhnout a pak to spustíš znovu, zobrazí to jenom změněné a problémové soubory.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.