Hallo, On Wed, 16 Oct 2002, Achim Hoffmann wrote:
Nur kurz zu deinen Fragen: - mv (unter Linux) funktioniert (leider) ueber partitions hinweg, wie du richtig sagst verwendet man dafuer besser tar oder cpio
Allerdings. Hier mal wieder die "kanonische" Loesung[0]: cd /quelle; tar cp --atime-preserve . \ | ( cd /ziel; tar xp --atime-preserve ) oder tar -C /quelle cp --atime-preserve . \ | tar -C /ziel xp --atime-preserve
- mit dem find habe ich auf hardlinks angespielt, die Probleme damit sind dir ja klar ;-)
Auch das behandelt tar korrekt. Auch deswegen nimmt man ja tar... *hrmpf*
- mit "unsauber installiert" meinte ich solche die auch im single-user Mode /usr brauchen (habe ich aber genau so geschrieben)
Unfug. /usr/lib kann man problemlos im laufenden Betrieb umziehen (was ich uebrigens schon mehr als einmal gemacht habe), "schwierig" ist nur das, was eigentlich schon auf der /-Partition liegen muss (also erstmal /bin, /etc, /sbin und /lib[2]), sowie alles, das mehr oder weniger permanent im "aktiven Schreibzugriff" befindlich ist, also v.a. /var/log/* (und anderes unter /var wie /var/spool/*)! [X] Du willst dir klarmachen, das libs schon im Speicher sein koennen! Und falls du SW meinst, die erst noch libs von der HD aus /usr/lib nachladen muss, naja, ganz einfach: diese SW willst du in der Situation sowieso nicht verwenden, es sei denn, du bist Masochist und legst es darauf an, dir selbst ins Knie zu schiessen. /usr sollte man sowieso moeglichst 'ro' mounten. Einen solchen "Umzug" macht man aber sowieso so, dass man 1. kopiert, 2. umstellt, 3. (nach einer Test-Phase) loescht. Kritisch ist (nur) Schritt 2! Also z.B. (angenommen /usr liegt bisher auf '/'[1] und /dev/hdc7 ist die Partition auf der zukuenftig /usr liegen soll): ==== mke2fs /dev/hdc7 sync mount /dev/hdc7 /mnt/ init 1 ## das ist hier wohl schon angebracht, muss aber AFAIK ## (noch) nicht unbedingt sein... mount -oremount,ro / cd /usr tar -cp --atime-preserve . | tar -C /mnt/ -xvp --atime-preserve sync umount /mnt ## nun der (einzige!) wirklich kritische (3-)Schritt, hier ist ein ## 'init 1' oder besser noch 'init S' dann schon angebracht... ## Alternativ: siehe [3] mv /usr/ /usr.old && mkdir /usr && mount /dev/hdc7 /usr ## und hier kann man evtl. schon wieder zu 'init 3' oder sonstwas ## wechseln ldconfig ## IIRC ist das sogar ueberfluessig, da sich der Pfad der ## libs ja nicht aendert! ## und nun: in aller Ruhe die fstab anpassen, koennte man aber ## auch schon frueher machen... $EDITOR /etc/fstab ## [...es folgt eine je nach Paranoia ausgedehnte Testphase... ## Paranoiker sind zu einem (ungetestet!): ## ( s=0 ## for f in `find /usr.old -type f`; do ## cmp "$f" "${f//\/usr.old\//\/usr\/}" || { echo "$f" >&2; s=$[s+1]; } ## done ## exit $s ## ) ## herzlich eingeladen...] rm -rf /usr.old/ ==== Kurz: Die effektive "Downtime" ist wohl < 1s. Was also /usr/lib angeht: Vergiss es. Das ist trivial. -dnh [0] man kann's offenbar nicht oft genug erwaehnen... [1] andernfalls wird's noch einfacher [2] mit einem kleinen Trick koennte man selbst davon wohl einen Grossteil auslagern, aber das habe ich nie getestet... (man kann ausnuetzen, dass ein Mountpoint nicht leer sein muss um eine Partition dort zu mounten... (Hint: /lib/modules und die libc auf die root-Partition (per symlink!), den Rest koennte man wohl auslagern...) [3] man koennte, wie Bernd nebenan vorschlaegt, die neue Partition auch erstmal "ueber" das alte Verzeichnis mounten... Irgendwann kommt man aber um obigen Schritt nicht herum... -- I'd play with your mind, but I prefer bigger toys. -- Tyger