Bombardare per la pace è un po’ come trombare per la verginità…

Creazione automatica di archivi multivolume con tar

La mia necessità era semplice: creare una serie di file non più grandi di 2gb (limitazione data di default da smbmount, sormontabile con l’opzione lfs) partendo da un singolo file (o da una cartella, ma lo script finale richiede una piccola modifica utilizzando du anzichè ls).

Tar si adatta bene allo scopo, l’unico scoglio è stato capire come evitare che mi chiedesse ad ogni file di inserire il nuovo volume (la funzionalità multivolume di tar è nata per archiviare su nastro, quindi si aspetta che qualcuno lo cambi).

Il comando è quindi questo:

$ tar -L 1536000 -M -c --file=destinazione1.tar --file=destinazione2.tar --file=destinazione3.tar /path/file_o_cartella_sorgente

volendo potete anche comprimere:

$ tar -L 1536000 -M -c -j --file=destinazione1.tar.bz2 --file=destinazione2.tar.bz2 --file=destinazione3.tar.bz2 /path/file_o_cartella_sorgente

Questo comando implica però che sappiate la dimensione del file da archiviare, con lo script di seguito, invece, tale operazione è automatica:

#!/bin/bash

# DICHIARO QUESTE VARIABILI COME INTERE
declare -i MAX_DIM
declare -i ORIG_DIM
declare -i NUM_FILES
declare -i COUNT

# FILE DI CUI FARE BACKUP
FILE_ORIGINE="/path/file.tar.bz2"

# DIMENSIONE MASSIMA DEI FILES DA CREARE
MAX_DIM=1536000 # 1,5GB

# DIMENSIONE DEL FILE DI ORIGINE
ORIG_DIM=`ls -s $FILE_ORIGINE  | cut -d " " -f1`

# NUMERO DI FILES DA CREARE
NUM_FILES=$ORIG_DIM/$MAX_DIM
# AUMENTATO DI 1 IN CASO DI RESTO
NUM_FILES=$NUM_FILES+1

# INIZIALIZZO LE VARIABILI DEL CICLO
COUNT=1
FILE=""

while [ $COUNT -le $NUM_FILES ]
do
        FILE="$FILE--file=backup$COUNT.tar "
        COUNT=$COUNT+1
done

tar -L $MAX_DIM -M -c $FILE $FILE_ORIGINE

il comando che ne viene fuori è tipo questo:

$ tar -L 1536000 -M -c --file=backup1.tar --file=backup2.tar --file=backup3.tar  /path/file.tar.bz2
Condividi questo post:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Identi.ca
  • LinkedIn
  • Reddit
  • Twitter
  • Ping.fm
blog comments powered by Disqus