coguaro
04-08-2013, 13.02.22
come ho gia scritto nella discussione originale che si trova qui (http://forum.wintricks.it/showpost.php?p=1681700&postcount=82) mi è venuto in mente di spostare uno script modificato con l'aiuto del forum da windows ha linux purtroppo per me mi trovo difronte a diversi scogli???
di seguito un aggiornamento sulla situazione
attualmente i test li sto facendo schedulando il primo file che poi richiama gli altri come root in modo da non dover dare password per i comandi che hanno bisogno di quei privilegi
salva.sh
#!/bin/bash -xv
# verifico la presenza delle cartelle per il backup ed eventualmente le creo
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
if [ -d Backup ];
then
cd Backup
echo "La cartella /media/ubuntu/data/Backup esiste già"
else
echo "La cartella /media/ubuntu/data/Backup non esiste e sarà ora creata"
mkdir Backup
cd Backup
fi
if [ -d Log ];
then
cd Log
echo "La cartella /media/ubuntu/data/Backup/Log esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Log non esiste e sarà ora creata"
mkdir Log
cd Log
fi
cd
mount -t cifs //192.168.1.148/c /mnt/f -o user=guest,pass=,rw,uid=ubuntu
#sudo mount -t cifs //192.168.1.148/c /mnt/f -o user=guest,pass=,rw,uid=ubuntu
#sudo mount -t cifs //7.235.62.114/hd_server /mnt/f -o user=backup,pass=backup,rw,uid=ubuntu
/home/ubuntu/copia.sh | tee "/media/ubuntu/data/Backup/Log/copia `date +%d-%m-%Y` `date +%H.%M.%S`.log"
/home/ubuntu/backup.sh | tee "/media/ubuntu/data/Backup/Log/backup `date +%d-%m-%Y` `date +%H.%M.%S`.log"
chmod -R 777 /media/ubuntu/data
net rpc shutdown -r 10.0.0.1 -Uuser%PASS
shutdown -p now
questo script è quasi perfetto devo solo provare l'effettivo shutdown del server windows (attualmente sto lavorando con una macchina virtuale e non posso spegnere il pc da cui prendo i dati) e capire come mai non mi fa lo shutdown della macchina viruale???
copia.sh
#!/bin/bash -x
# verifico la presenza delle cartelle per il backup ed eventualmente le creo
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
if [ -d Backup ];
then
cd Backup
echo "La cartella /media/ubuntu/data/Backup esiste già"
else
echo "La cartella /media/ubuntu/data/Backup non esiste e sarà ora creata"
mkdir Backup
cd Backup
fi
if [ -d "Non Compressi" ];
then
cd "Non Compressi"
echo "La cartella /media/ubuntu/data/Backup/Non Compressi esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Non Compressi non esiste e sarà ora creata"
mkdir "Non Compressi"
cd "Non Compressi"
fi
if [ -d Fnet ];
then
cd Fnet
echo "La cartella /media/ubuntu/data/Backup/Non Compressi/Fnet esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Non Compressi/Fnet non esiste e sarà ora creata"
mkdir Fnet
cd Fnet
fi
cd ..
if [ -d Documenti ];
then
cd Documenti
echo "La cartella /media/ubuntu/data/Backup/Non Compressi/Documenti esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Non Compressi/Documenti non esiste e sarà ora creata"
mkdir Documenti
cd Documenti
fi
cd
IERI=$(date +%s -d "1 day ago")
EXCLUDE="/home/ubuntu/lista.txt"
MOMENTOTOPICO="`date +%d-%m-%Y` `date +%H.%M.%S`"
DEST="/media/ubuntu/data/Backup/Non Compressi/Documenti/Documenti "$MOMENTOTOPICO
for i in /mnt/f/Documenti/*
do
for x in $EXCLUDE
do
if [ "$x" != "$i" ]; then
DATE=$(date -d$(stat --format=%y "$i" | cut -d\ -f1) +%s) ;
if [ "$DATE" -gt "$IERI" ];
then
[ ! -d "$DEST" ]; mkdir -p "$DEST"
cp -aRv "$i" "$DEST"
((numfiles++))
fi
fi
done
done
echo "file copiati $numfiles"
EXCLUDE="/home/ubuntu/lista.txt"
MOMENTOTOPICO="`date +%d-%m-%Y` `date +%H.%M.%S`"
DEST="/media/ubuntu/data/Backup/Non Compressi/Fnet/Fnet "$MOMENTOTOPICO
for i in /mnt/f/fnet/*
do
for x in $EXCLUDE
do
if [ $x != $i ]; then
[ ! -d "$DEST" ]; mkdir -p "$DEST"
cp -aRv $i "$DEST"
((numfiles++))
fi
done
done
echo "file copiati $numfiles"
in queso script invece ho problemi con i documenti in quanto con windows io facevo con xopy
doff mm-dd-yyyy > tempdata.txt
@echo on
for /F %%x in (tempdata.txt) do xcopy "f:\Documenti\*.*" "d:\Backup\Non Compressi\Documenti\Documenti %data% %time%" /D:%%x /c /v /f /i /s /e /k /r /h /y /z /Exclude:lista.Txt
opzioni xcopy per documenti
/D:%%x /c /v /f /i /s /e /k /r /h /y /z /Exclude:lista.Txt
/D:m-d-y Copia i file modificati dopo la data specificata (inclusa).
Se non è specificata alcuna data, copia solo i file la cui
ora di origine è più recente rispetto all'ora di destinazione.
/EXCLUDE:file1[+file2][+file3]...
Specifica un elenco di file contenenti stringhe. Nei file
le stringhe devono essere riportate su righe distinte.
Se il percorso assoluto di un file da copiare corrisponde
almeno in parte a una delle stringhe presenti in tali file,
il file verrà escluso dalla copia.
Se ad esempio si specifica una stringa quale \obj\ o .obj,
verranno esclusi rispettivamente tutti i file nella directory
obj o tutti i file con estensione obj.
/S Copia directory e sottodirectory, ad eccezione di quelle vuote.
/E Copia directory e sottodirectory, incluse quelle vuote.
Analogo a /S /E. Questa opzione può essere utilizzata per
modificare /T.
/V Verifica le dimensioni di ogni nuovo file.
/C Continua la copia anche in caso di errori.
/I Se la destinazione non esiste e la copia riguarda più file,
verrà presupposto che la destinazione sia una directory.
/F Visualizza i nomi completi dei file di origine e destinazione
durante la copia.
/H Copia anche i file nascosti e di sistema.
/R Sovrascrive i file di sola lettura.
/K Copia gli attributi. Il comando Xcopy senza opzioni reimposta
gli attributi di sola lettura.
/Y Non chiede conferma prima di sovrascrivere un file
di destinazione esistente.
/Z Copia file di rete in modalità riavviabile.
la copia dei soli file modificati nelle ultime 24 ore in tutte le sottocartelle in una nuova cartella ogni giorno come creare la cartella ogni giorno non è stato un grosso problema il problema è la ricerca dei file come con windows visto che cp questa cosa non la fa con lo script attuale la ricerca la fa ma non copia solo i file modificati ma tutta la cartella ed eventuali sottocartelle o file anche se non sono stati mdoficati
in rete ho trovato questa riga di comando per find
find $E ! -type d -mtime -1 -exec cp -r --parents {} $B/$T \;
che dovrebbe servire al caso mio ma non saprei come integrarla nello script attuale??? l'unica cosa che so fare è modificare il $e con /mnt/f/Documenti/* che è la mia cartella di origine dove deve essere fatta la ricerca e penso anche $B/$T con "$DEST" che sarebbe la mia destinazione
backup.sh
#!/bin/bash -x
# verifico la presenza delle cartelle per il backup ed eventualmente le creo
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
if [ -d Backup ];
then
cd Backup
echo "La cartella /media/ubuntu/data/Backup esiste già"
else
echo "La cartella /media/ubuntu/data/Backup non esiste e sarà ora creata"
mkdir Backup
cd Backup
fi
if [ -d Compressi ];
then
cd Compressi
echo "La cartella /media/ubuntu/data/Backup/Compressi esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi non esiste e sarà ora creata"
mkdir Compressi
cd Compressi
fi
if [ -d Fnet ];
then
cd Fnet
echo "La cartella /media/ubuntu/data/Backup/Compressi/Fnet esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi/Fnet non esiste e sarà ora creata"
mkdir Fnet
cd Fnet
fi
cd ..
if [ -d Documenti ];
then
cd Documenti
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti non esiste e sarà ora creata"
mkdir Documenti
cd Documenti
fi
if [ -d Completo ];
then
cd Completo
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti/Completo esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti/Completo non esiste e sarà ora creata"
mkdir Completo
cd Completo
cd ..
fi
if [ -d Incrementale ];
then
cd Incrementale
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti/Incrementale esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti/Incrementale non esiste e sarà ora creata"
mkdir Incrementale
cd Incrementale
cd ..
fi
# verifica se il file documenti.7z esiste:
# - se esiste, lo aggiorna nel nuovo file
# - se non esiste, lo crea
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
cd Backup
cd Compressi
cd Documenti
cd Completo
if [ -f documenti.7z ];
then
echo "Il file Documenti.7z esiste ora lo aggiorno"
else
echo "Il file documenti.7z non esiste e sarà ora creato"
set -v
7z a -r -x@"/home/ubuntu/lista.txt" -y -mx=9 "documenti.7z" "/mnt/f/Documenti/*.*"
cp documenti.7z "documenti completo `date +%d-%m-%Y` `date +%H.%M.%S`.7z"
set +v
fi
# Crea il file incrementale documenti con i file modificati dall'ultimo backup
set -v
7z u "documenti.7z" -u- -up0q0r2x0y2z0w2!new.7z -mx=9 "/mnt/f/Documenti/*.*" -r -x@"/home/ubuntu/lista.txt" -y
mv new.7z "/media/ubuntu/data/Backup/Compressi/Documenti/Incrementale/documenti `date +%d-%m-%Y` `date +%H.%M.%S`.7z"
set +v
# Aggiorna i file documenti.7z per poter creare l'incrementale con i soli file modificati nelle ultime 24 ore
set -v
7z u -r -x@"/home/ubuntu/lista.txt" -y "documenti.7z" -mx=9 "/mnt/f/Documenti/*.*"
set +v
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
cd Backup
cd Compressi
cd Fnet
#creo il backup di Fnet
set -v
7z a -r -x@"/home/ubuntu/lista.txt" -y -mx=9 "fnet `date +%d-%m-%Y` `date +%H.%M.%S`.7z" "/mnt/f/fnet/*.*"
set +v
questo script di base non ha problemi per fortuna
lista.txt
thumbs.db
*.DS_Store
desktop.ini
~*.tmp
~*.doc
l'unico altro "problema" che affligge questo script è un problemino con i log con windows mettendo "@echo on" prima della riga di comando e "@echo off" dopo la riga di comando riuscivo ad avere nei log oltre all'output degli script anche la riga di comando come con windows
qualcuno sa aiutarmi???
di seguito un aggiornamento sulla situazione
attualmente i test li sto facendo schedulando il primo file che poi richiama gli altri come root in modo da non dover dare password per i comandi che hanno bisogno di quei privilegi
salva.sh
#!/bin/bash -xv
# verifico la presenza delle cartelle per il backup ed eventualmente le creo
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
if [ -d Backup ];
then
cd Backup
echo "La cartella /media/ubuntu/data/Backup esiste già"
else
echo "La cartella /media/ubuntu/data/Backup non esiste e sarà ora creata"
mkdir Backup
cd Backup
fi
if [ -d Log ];
then
cd Log
echo "La cartella /media/ubuntu/data/Backup/Log esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Log non esiste e sarà ora creata"
mkdir Log
cd Log
fi
cd
mount -t cifs //192.168.1.148/c /mnt/f -o user=guest,pass=,rw,uid=ubuntu
#sudo mount -t cifs //192.168.1.148/c /mnt/f -o user=guest,pass=,rw,uid=ubuntu
#sudo mount -t cifs //7.235.62.114/hd_server /mnt/f -o user=backup,pass=backup,rw,uid=ubuntu
/home/ubuntu/copia.sh | tee "/media/ubuntu/data/Backup/Log/copia `date +%d-%m-%Y` `date +%H.%M.%S`.log"
/home/ubuntu/backup.sh | tee "/media/ubuntu/data/Backup/Log/backup `date +%d-%m-%Y` `date +%H.%M.%S`.log"
chmod -R 777 /media/ubuntu/data
net rpc shutdown -r 10.0.0.1 -Uuser%PASS
shutdown -p now
questo script è quasi perfetto devo solo provare l'effettivo shutdown del server windows (attualmente sto lavorando con una macchina virtuale e non posso spegnere il pc da cui prendo i dati) e capire come mai non mi fa lo shutdown della macchina viruale???
copia.sh
#!/bin/bash -x
# verifico la presenza delle cartelle per il backup ed eventualmente le creo
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
if [ -d Backup ];
then
cd Backup
echo "La cartella /media/ubuntu/data/Backup esiste già"
else
echo "La cartella /media/ubuntu/data/Backup non esiste e sarà ora creata"
mkdir Backup
cd Backup
fi
if [ -d "Non Compressi" ];
then
cd "Non Compressi"
echo "La cartella /media/ubuntu/data/Backup/Non Compressi esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Non Compressi non esiste e sarà ora creata"
mkdir "Non Compressi"
cd "Non Compressi"
fi
if [ -d Fnet ];
then
cd Fnet
echo "La cartella /media/ubuntu/data/Backup/Non Compressi/Fnet esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Non Compressi/Fnet non esiste e sarà ora creata"
mkdir Fnet
cd Fnet
fi
cd ..
if [ -d Documenti ];
then
cd Documenti
echo "La cartella /media/ubuntu/data/Backup/Non Compressi/Documenti esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Non Compressi/Documenti non esiste e sarà ora creata"
mkdir Documenti
cd Documenti
fi
cd
IERI=$(date +%s -d "1 day ago")
EXCLUDE="/home/ubuntu/lista.txt"
MOMENTOTOPICO="`date +%d-%m-%Y` `date +%H.%M.%S`"
DEST="/media/ubuntu/data/Backup/Non Compressi/Documenti/Documenti "$MOMENTOTOPICO
for i in /mnt/f/Documenti/*
do
for x in $EXCLUDE
do
if [ "$x" != "$i" ]; then
DATE=$(date -d$(stat --format=%y "$i" | cut -d\ -f1) +%s) ;
if [ "$DATE" -gt "$IERI" ];
then
[ ! -d "$DEST" ]; mkdir -p "$DEST"
cp -aRv "$i" "$DEST"
((numfiles++))
fi
fi
done
done
echo "file copiati $numfiles"
EXCLUDE="/home/ubuntu/lista.txt"
MOMENTOTOPICO="`date +%d-%m-%Y` `date +%H.%M.%S`"
DEST="/media/ubuntu/data/Backup/Non Compressi/Fnet/Fnet "$MOMENTOTOPICO
for i in /mnt/f/fnet/*
do
for x in $EXCLUDE
do
if [ $x != $i ]; then
[ ! -d "$DEST" ]; mkdir -p "$DEST"
cp -aRv $i "$DEST"
((numfiles++))
fi
done
done
echo "file copiati $numfiles"
in queso script invece ho problemi con i documenti in quanto con windows io facevo con xopy
doff mm-dd-yyyy > tempdata.txt
@echo on
for /F %%x in (tempdata.txt) do xcopy "f:\Documenti\*.*" "d:\Backup\Non Compressi\Documenti\Documenti %data% %time%" /D:%%x /c /v /f /i /s /e /k /r /h /y /z /Exclude:lista.Txt
opzioni xcopy per documenti
/D:%%x /c /v /f /i /s /e /k /r /h /y /z /Exclude:lista.Txt
/D:m-d-y Copia i file modificati dopo la data specificata (inclusa).
Se non è specificata alcuna data, copia solo i file la cui
ora di origine è più recente rispetto all'ora di destinazione.
/EXCLUDE:file1[+file2][+file3]...
Specifica un elenco di file contenenti stringhe. Nei file
le stringhe devono essere riportate su righe distinte.
Se il percorso assoluto di un file da copiare corrisponde
almeno in parte a una delle stringhe presenti in tali file,
il file verrà escluso dalla copia.
Se ad esempio si specifica una stringa quale \obj\ o .obj,
verranno esclusi rispettivamente tutti i file nella directory
obj o tutti i file con estensione obj.
/S Copia directory e sottodirectory, ad eccezione di quelle vuote.
/E Copia directory e sottodirectory, incluse quelle vuote.
Analogo a /S /E. Questa opzione può essere utilizzata per
modificare /T.
/V Verifica le dimensioni di ogni nuovo file.
/C Continua la copia anche in caso di errori.
/I Se la destinazione non esiste e la copia riguarda più file,
verrà presupposto che la destinazione sia una directory.
/F Visualizza i nomi completi dei file di origine e destinazione
durante la copia.
/H Copia anche i file nascosti e di sistema.
/R Sovrascrive i file di sola lettura.
/K Copia gli attributi. Il comando Xcopy senza opzioni reimposta
gli attributi di sola lettura.
/Y Non chiede conferma prima di sovrascrivere un file
di destinazione esistente.
/Z Copia file di rete in modalità riavviabile.
la copia dei soli file modificati nelle ultime 24 ore in tutte le sottocartelle in una nuova cartella ogni giorno come creare la cartella ogni giorno non è stato un grosso problema il problema è la ricerca dei file come con windows visto che cp questa cosa non la fa con lo script attuale la ricerca la fa ma non copia solo i file modificati ma tutta la cartella ed eventuali sottocartelle o file anche se non sono stati mdoficati
in rete ho trovato questa riga di comando per find
find $E ! -type d -mtime -1 -exec cp -r --parents {} $B/$T \;
che dovrebbe servire al caso mio ma non saprei come integrarla nello script attuale??? l'unica cosa che so fare è modificare il $e con /mnt/f/Documenti/* che è la mia cartella di origine dove deve essere fatta la ricerca e penso anche $B/$T con "$DEST" che sarebbe la mia destinazione
backup.sh
#!/bin/bash -x
# verifico la presenza delle cartelle per il backup ed eventualmente le creo
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
if [ -d Backup ];
then
cd Backup
echo "La cartella /media/ubuntu/data/Backup esiste già"
else
echo "La cartella /media/ubuntu/data/Backup non esiste e sarà ora creata"
mkdir Backup
cd Backup
fi
if [ -d Compressi ];
then
cd Compressi
echo "La cartella /media/ubuntu/data/Backup/Compressi esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi non esiste e sarà ora creata"
mkdir Compressi
cd Compressi
fi
if [ -d Fnet ];
then
cd Fnet
echo "La cartella /media/ubuntu/data/Backup/Compressi/Fnet esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi/Fnet non esiste e sarà ora creata"
mkdir Fnet
cd Fnet
fi
cd ..
if [ -d Documenti ];
then
cd Documenti
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti non esiste e sarà ora creata"
mkdir Documenti
cd Documenti
fi
if [ -d Completo ];
then
cd Completo
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti/Completo esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti/Completo non esiste e sarà ora creata"
mkdir Completo
cd Completo
cd ..
fi
if [ -d Incrementale ];
then
cd Incrementale
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti/Incrementale esiste già"
else
echo "La cartella /media/ubuntu/data/Backup/Compressi/Documenti/Incrementale non esiste e sarà ora creata"
mkdir Incrementale
cd Incrementale
cd ..
fi
# verifica se il file documenti.7z esiste:
# - se esiste, lo aggiorna nel nuovo file
# - se non esiste, lo crea
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
cd Backup
cd Compressi
cd Documenti
cd Completo
if [ -f documenti.7z ];
then
echo "Il file Documenti.7z esiste ora lo aggiorno"
else
echo "Il file documenti.7z non esiste e sarà ora creato"
set -v
7z a -r -x@"/home/ubuntu/lista.txt" -y -mx=9 "documenti.7z" "/mnt/f/Documenti/*.*"
cp documenti.7z "documenti completo `date +%d-%m-%Y` `date +%H.%M.%S`.7z"
set +v
fi
# Crea il file incrementale documenti con i file modificati dall'ultimo backup
set -v
7z u "documenti.7z" -u- -up0q0r2x0y2z0w2!new.7z -mx=9 "/mnt/f/Documenti/*.*" -r -x@"/home/ubuntu/lista.txt" -y
mv new.7z "/media/ubuntu/data/Backup/Compressi/Documenti/Incrementale/documenti `date +%d-%m-%Y` `date +%H.%M.%S`.7z"
set +v
# Aggiorna i file documenti.7z per poter creare l'incrementale con i soli file modificati nelle ultime 24 ore
set -v
7z u -r -x@"/home/ubuntu/lista.txt" -y "documenti.7z" -mx=9 "/mnt/f/Documenti/*.*"
set +v
cd
cd ..
cd ..
cd media
cd ubuntu
cd data
cd Backup
cd Compressi
cd Fnet
#creo il backup di Fnet
set -v
7z a -r -x@"/home/ubuntu/lista.txt" -y -mx=9 "fnet `date +%d-%m-%Y` `date +%H.%M.%S`.7z" "/mnt/f/fnet/*.*"
set +v
questo script di base non ha problemi per fortuna
lista.txt
thumbs.db
*.DS_Store
desktop.ini
~*.tmp
~*.doc
l'unico altro "problema" che affligge questo script è un problemino con i log con windows mettendo "@echo on" prima della riga di comando e "@echo off" dopo la riga di comando riuscivo ad avere nei log oltre all'output degli script anche la riga di comando come con windows
qualcuno sa aiutarmi???