Mi appunto un paio di script utili per operazioni che compio spesso.

Come sincronizzare i sorgenti di un progetto sw, senza i file di versionamento

rsync -avz --exclude=.svn /alfa/beta/gamma  /epsilon/zeta/theta/
  1. Il flag -a imposta la sincronizzazione in ‘archive mode’: ricorsivamente ogni file viene copiato, preservando attributi, permessi e riferimenti.
  2. Il flag -v imposta il ‘verbose mode’.
  3. Il flag -z agisce sulla compressione nel trasferimento dei dati
  4. Notare che il path sorgente cosi’ indicato eviterà la creazione di una ulteriore directory nel path target.

Se si vuole escludere una lista di risorse:

rsync -avz --exclude-from 'exclude_resources.txt' /alfa/beta/gamma  /epsilon/zeta/theta/

dove exclude_resources.txt è un file del genere:

.svn
bin
lib
build
dist

Come sincronizzare due directory, in modo generico.

#!/bin/bash

# sincronizza la directory remota di documentazione del progetto
# con la directory locale di documentazione del progetto

OLDIFS=$IFS

DIR_FROM="/foo/bar/project_remote/"
DIR_TO='/home/foo/project_local'

echo -e "i file saranno spostati"
echo -e "da --> $DIR_FROM"
echo -e "a  --> $DIR_TO"
echo  'CONFERMI?[y/n]'

read conferma
if [ "$conferma" != "y" ]
then exit
fi

IFS=$'\n'

# dir esiste?
if [ ! -d "$DIR_FROM" ]
then
 echo "la dir $DIR_FROM non esiste!"
 IFS=$OLDIFS
 exit
fi
if [ ! -d "$DIR_TO" ]
then
 echo "la dir $DIR_TO non esiste!"
 IFS=$OLDIFS
 exit
fi
# sincronizzazione
rsync -avz $DIR_FROM $DIR_TO

IFS=$OLDIFS

echo '****** OPERAZIONE CONCLUSA ******'

exit;
No TweetBacks yet. (Be the first to Tweet this post)
 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Set your Twitter account name in your settings to use the TwitterBar Section.