LPS:Převod upload adresáře mediawiki do hash formátu
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
Errata
1) skript byl vyvíjen na ubuntu při spuštění na debianu byl problém, že příkaz "ls -lA" dává jinak rozmístěné informace je nutné "poladit" číslo vypisovaného sloupce v příkazu awk