lunedì 7 maggio 2012

Script "copia e sposta"

Problema:
Copiare da una directory i files e le directory in ordine di eta`, dal piu` vecchio al piu` recente, in una chiavetta usb, spostandoli infine in una diversa posizione

Ho pensato ad un utilizzo, sia con parametri da linea di comando, che inserimento manuale con relativa domanda, per questo ho lasciato alcune parti dello script, che, anche se non utilizzate o utilizzate solo in parte, possono servire per combinarlo come meglio si ritiene opportuno.

copy-and-move.sh
#!/bin/bash

# Help
if [[ $# -ne 3 || $1 = "-h" ]]; then
    echo "uso: $0 <directory e/o nomefile sorgente> \
<destinazione/percorso completo della directory dove copiare> \
<destinazione/percorso completo della directory dove spostare>"
    echo ""
    exit 1
fi

# Fixed ?
SOURCE="$1"
DESTCP="$2"
DESTMV="$3"


echo -n "Name of the source directory [$SOURCE]: "
read SOURCE
if [ "$SOURCE"x = x ]; then SOURCE="$1"; fi
echo -n "Name of the copy destination directory [$DESTCP]: "
read DESTCP
if [ "$DESTCP"x = x ]; then DESTCP="$2"; fi
echo -n "Name of the move destination directory [$DESTMV]: "
read DESTMV
if [ "$DESTMV"x = x ]; then DESTMV="$3"; fi

NOME="`ls -tr $SOURCE | cut -f1 | head -n 1`"


while [ "$NOME" != "" ]
    do
 echo "Inizio copia .."
 cp -v -R "$SOURCE/$NOME" "$DESTCP";
 if [ "$?" != "1" ]
     then
  echo "Inizio sposta .."
  mv -v "$SOURCE/$NOME" "$DESTMV"
  NOME="`ls -tr $SOURCE | cut -f1 | head -n 1`"
     else
  echo "Ended at: $SOURCE/$NOME"
  exit 1
 fi
done

L'uso e` semplice, richiamato senza parametri o con "-h", visualizza l'help.
Una volta eseguito con parametri, viene chiesta conferma per ogniuno e data la possibilita` di correggerlo, ma: attenzione a non sbagliare.
Quando la chiavetta e` piena, il comando copia va` in errore e mi fermo, visualizzando l'ultima copia in corso senza spostarla, cosi` da poterla eliminare dalla chiavetta ed averla ancora nella posizione originale per la volta successiva.

Dal primo "if", quello dell'help, si potrebbe eliminare la condizione dei parametri in avvio, la parte "$# -ne 3", optando per l'inserimento manuale alla richiesta.

Usatelo a vostro rischio, non mi assumo rensonsabilita`.
E se avete idee per perfezionarlo, usate il modulo commenti o scrivetemi una mail.
Se mi ricordo, poi vi "coloro" le scritte che passano a video quando ci sono tanti piccolo files ;)

Nessun commento:

Posta un commento