Archiviare file in formato zip con opzione di split

Ven, 29/04/2011 - 10:31

Archiviare file in formato zip con opzione di split

Inviato da Gollum 5 commenti

Ho creato questo piccolo script solo per avere una alternativa non grafica a fileroller. Praticamente passando uno o più file alla riga di comando viene avviato il processo di archiviazione che una volta ultimato informa l'utente sulla misura dell' archivio e sulla possibilità di poterlo dividere in più parti. Dato l'impiego del comando di sistema split sto cercando una alternativa che mi permetta di riottenere un archivio completo anche dalle utility di windows (su Linux si riottiene tramite il comando cat partedelfile* > nomearchivio.zip
). Lo script può essere ancora migliorato e, naturalmente se aqualcuno venisse in mente qualcosa per farlo è il benvenuto.

#! /bin/bash
 
message0="ERRORE!"
message1="	.....[Ok]"
message2="	.....[Fallito]"
 
# Controlla che la riga di comando passi
# almeno un argomento.
if [[ -z "$@" ]]
then
	echo ""
	echo "$message0"
	echo "Devi inserire almeno un argomento."
	exit 1
else
	continue
fi
 
for i in "$@"
do
	echo ""
	echo -n "Archiviazione del file $i"
	zip -q -r $i.zip $i
	# Controlla se l'archivio è stato creato con
	# successo.
	if [[ -e $i.zip ]]
	then
		echo "$message1"
	else
		echo -n ""
		echo "$message2"
		exit 1
	fi
	echo ""
	# Recupera la dimensione dell'archivio creato.
	zipsize=`du -m $i.zip | awk '{print $1}'`
	# Il costrutto case permette di scegliere se dividere
    	# i file in più parti (inizializzando la misura in MB),
	# oppure di uscire direttamente dallo script.
	echo "L'archivio $i.zip misura "$zipsize"MB, vuoi dividerlo in più parti?"		
	echo "s) per confermare, n) per proseguire, q) per forzare l'uscita." 
	read reply
 
	case $reply in
		s)echo ""
		echo "Inserisci la misura in MB che vuoi dare ai file."
		read maxsize
		split -d -b "$maxsize"M $i.zip $i
		rm -rf $i.zip
		;;
		n)echo ""
		echo "Hai scelto di non dividere l'archivio $i.zip in più parti."
		continue
		;;
		q)echo ""
		echo "USCITA IMMEDIATA"
		break
		;;
	esac
done





Commenti

Ritratto di aksaf
#1

Inviato da aksaf il Lun, 16/05/2011 - 01:25.

Re: Archiviare file in formato zip con opzione di split

Carino lo scriptino Wink
Per riunire i file in win senza usare cat (http://gnuwin32.sourceforge.net/packages/coreutils.htm) ma solo app DOS-Win potresti usare (sempre che già non lo conosci):
copy /b file1+file1+... file_finale
in un batch... sperando che copy funzioni bene Smile
ciao



Ritratto di wal7er
#2

Inviato da wal7er il Lun, 16/05/2011 - 15:39.

Re: Archiviare file in formato zip con opzione di split

In alternativa http://unxutils.sourceforge.net/

HP Pavilion dv5-1110el powered by OpenSUSE 13.2 64bit

http://linuxcounter.net/cert/432576.png



Ritratto di Gollum
#3

Inviato da Gollum il Mar, 17/05/2011 - 20:05.

Re: Archiviare file in formato zip con opzione di split

Grazie per gli indirizzi che mi avete indicato, mi torneranno sicuramente utili Big Grin. Nel frattempo sto apportando alcuni miglioramenti allo script e a breve dovrei aggiornarlo anche su sito. Wink

Desktop DELL XPS8100 => openSUSE_12.2 => KDE 4.10 => Core i7 => 3.4.28-2.20 => Nvidia GT220
Notebook Sony Vaio VPPCA =>openSUSE_12.2 => KDE 4.10 => Core i5 => 3.4.28-2.20 => AMD HD 6470M



Ritratto di marcosan
#4

Inviato da marcosan il Mer, 22/06/2011 - 14:13.

Re: Archiviare file in formato zip con opzione di split

Scusa ma perche` non usare direttamente zipsplit? Wink

Ciao,
Marco

"La matematica e' l'arte di dare lo stesso nome a cose diverse."
H.Poincare (1854-1912).



Ritratto di Gollum
#5

Inviato da Gollum il Mer, 22/06/2011 - 22:47.

Re: Archiviare file in formato zip con opzione di split

Devo ancora inserire lo script modificato dove al posto del comando split ho inserito proprio zipsplit, in questo modo (non l'ho ancora testato) in windows si dovrebbe recuperare la dir completa senza aprire terminali oppure installare ambienti esterni.

Desktop DELL XPS8100 => openSUSE_12.2 => KDE 4.10 => Core i7 => 3.4.28-2.20 => Nvidia GT220
Notebook Sony Vaio VPPCA =>openSUSE_12.2 => KDE 4.10 => Core i5 => 3.4.28-2.20 => AMD HD 6470M