PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : defrag_pseudo.sh



hehejo
21.05.2004, 11:54
Rein theoretisch:
Würde das hier funktionieren? (von root ausgeführt)

#!/bin/bash
# defrag_pseudo.sh
# (Gut, unsere FSs fragmentieren nicht...)

chmod 700 $1
tar cjf /$1.tar.bz2 $1
rm -rf $1
tar xjf /$1.tar.bz2 .
chmod 755 $1

Sperren des Verzeichnisses für alle andern User
Packen und in / abspeichern
Löschen des Verzeichnisses
und wieder entpacken
Rechte vergeben.

oenone
21.05.2004, 15:14
besser waers, wenn du gleich die partition neu formatierst.

etwa so:


tar cjf /$1.tar.bz2 $1
umount $1
newfs $(mount|grep $1|awk '{print $1}')
mount $1
tar xjf /$1.tar.bz2

alternativ kannst du auch als zweiten parameter das device angeben:


#!/bin/sh
mount -o remount,ro $1 # besser als die rechte zu aendern
cd $1 && tar cjf /root/$1.tar.bz2 . # relativ zum dir und ins root verzeichnis
cd /
umount $1
newfs $2 # parameter halt anpassen
mount $1 # wird wieder schreibbar gemountet (aus fstab)
cd $1 && tar xjf /root/$1.tar.bz2 # entpacken

nur ein vorschlag...

ach ja: auch linux FSs fragmentieren, zwar nicht so schlimm wie MS FSs, aber doch leicht.

auf bald
oenone

hehejo
21.05.2004, 16:26
An das readonly mounten hab ich gar nimmer gedacht.
Wie kann ich eigentlich rausfinden wie stark mein fs fragmentiert ist?

Ist newfs ein eigenes Programm oder etwas selbstgeschriebenes?

oenone
21.05.2004, 23:37
newfs ist ein eigenes programm und erzeugt ein dateisystem.
bei openbsd heisst es halt so. bei linux vllt. mke2fs, falls du ext2/3 hast, mkreiserfs falls du reiserfs hast, etc..

die fragmentierung kannst du per fsck rausfinden..
zumindest bei openbsd zeigt es das so an:

# fsck
** /dev/rsd0a (NO WRITE)
** Last Mounted on /
** Root file system
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
2162 files, 18614 used, 43969 free (305 frags, 5458 blocks, 0.5% fragmentation)
etc.. fuer alle partitionen, oder die partition, die ich als parameter angebe.

auf bald
oenone