LPS:Převod upload adresáře mediawiki do hash formátu

Z HelpDesk
Verze z 24. 6. 2009, 12:54, kterou vytvořil Mstrback (diskuse | příspěvky) (Nová stránka: jak praví tato stránka http://www.mediawiki.org/wiki/Manual:$wgHashedUploadDirectory není doporučeno měnit nastavení $wgHashedUploadDirectory pokud jsem již nějaké soubory n...)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)

jak praví tato stránka http://www.mediawiki.org/wiki/Manual:$wgHashedUploadDirectory není doporučeno měnit nastavení $wgHashedUploadDirectory pokud jsem již nějaké soubory nahráli. Ale co dělat v případě tom, že se uploadované soubory začnou kupit a zapnout hashování by bylo fajn? Pak je tu úžasný skript

Bash skript

 #!/bin/bash
 
 if [ x$1 == x ] || [ $1 == "help" ]; then
 	echo "Script for building hashed folder structure for Mediawiki upload folder" 
 	echo "Usage: script path"
 	exit
 fi
 
 echo -e "Working directory is $PWD/$1"
 path=`echo $1 | sed s./$..`
 echo -n "Creating backup folder $path.bck: "
 cp -r $1 $path.bck
 echo -e "done \n" 

 for i in `ls -lA $1 | grep -v ^d | awk {'print $8'} ` ; do
	echo -e "Name of file is $i"
	
	hash=`echo -n $i | md5sum | awk {'print $1'}`
	echo -e "it's hash is $hash"
	
	folder1=`echo $hash | cut -b1`
	echo -e "so first folder will be $folder1"
	folder2=`echo $hash | cut -b1-2`
	echo -e "and second folder $folder2"

	echo -n "Creating folders: "
	mkdir -p $1/$folder1/$folder2
	echo -e "done"
	echo -n "Moving file: "
	mv $1/$i $1/$folder1/$folder2
	echo -e "done"
	echo ""
 done

 echo -e "Now taking archive directory\n\n"
 archive="$path/archive"

 for i in `ls -lA $archive | grep -v ^d | awk {'print $8'} ` ; do
	echo -e "Name of file is $i"
	sname=`echo $i | cut -d'!' -f2-`
	echo -e "short name is $sname"
	
	hash=`echo -n $sname | md5sum | awk {'print $1'}`
	echo -e "it's hash is $hash"
	
	folder1=`echo $hash | cut -b1`
	echo -e "so first folder will be $folder1"
	folder2=`echo $hash | cut -b1-2`
	echo -e "and second folder $folder2"

	echo -n "Creating folders: "
	mkdir -p $archive/$folder1/$folder2
	echo -e "done"
	echo -n "Moving file: "
	mv $archive/$i $archive/$folder1/$folder2
	echo -e "done"
	echo ""
 done

Použití

je velmi jednoduché. Zdrojový kod uložíme do souboru a dáme mu práva pro spustitelnost. Pak zavoláme

./skript cesta_k_upload_slozce

Skript nejprve vytvoří záložní složku se stejným jménem a příponou .bck a následně původní složku převede do hash formátu. Pokud je vše ok je možné záložní složku smazat