attualmente sto utilizzando un script di backup basato su alcuni batch che fanno diverse verifiche poi lanciano 7zip e xcopy per creare le copie di backup di un gestionale e di una cartella documenti risiedenti su un "server" windows dato che adesso queste copie di backup sono fatte su un client e io vorrei spostarle su di un pc apposito solo per quello non avendo licenze windows che "avanzano" pensavo di usare ubuntu solo che non sa da che parte iniziare per convertire i comandi windows in comandi per linux la creazione dei "batch" e come gestire la schedulazione
il primo file che si chiama salva.bat imposta la tabella di codici per leggere correttamente le lettere accentate di un file txt poi imposta la variabile data da date cambiando gli / in - per non avere problemi con le directory dopo verifica la presenza della directory principale "backup" ed in mancanza la crea e poi verifica la presenza anche della cartella "log" ed in mancanza crea anche quella dopo di che lancia due file bat creando anche un txt come log di tutte le operazioni fatte e le mostra anche tramite il programma WTEE che sono i veri e propri script di backup uno è una copia in chiaro di tutti i file del gestionale e di tutti i file presenti nella directory documenti che sono stati modificati da una determinata data in questo caso la data odierna l'altro fa la stessa cosa solo che invece che in chiaro la fa compressa finita l'esecuzione dei due script esce
il secondo file che si chiama copia.bat per sicurezza reimposta la tabella di codici per leggere correttamente le lettere accentate di un file txt poi imposta la variabile data da date cambiando gli / in - per non avere problemi con le directory dopo verifica la presenza della directory principale di backup ed in mancanza la crea poi verifica la presenza di una directory chiamata "Non Compressi" ed in mancanza la crea poi verifica la presenza di una directory chiamata "Fnet" ed in mancanza la crea in questa cartella verranno copiati i file del gestionale poi verifica la presenza di una directory chiamata "Documenti" ed in mancanza la crea in questa cartella verrano copiati i documenti dopo lancia il comando DOFF per avere la data odierna da dare in pasto al comando xcopy dopo di che ci sono le due righe di comando di xcopy una per i documenti e una per il gestionale con le relative opzioni che io ho ritenuto necessariecodice:@echo off setlocal :: imposta i caratteri di Windows, dato che nelle prossime righe sarà letto un file txt :: (per leggere correttamente i caratteri accentati) chcp 1252 :: imposta la variabile data con la data odierna set data=%date% :: cambia / con - altrimenti fa casino con le directory :-) set data=%data:/=-% :: verifico la presenza delle cartelle per il backup ed eventualmente le creo d: cd\ if exist d:\Backup ( ECHO La cartella d:\Backup esiste già goto process ) else ( ECHO La cartella d:\Backup non esiste e sarà ora creata ) md Backup cd Backup goto fine :process cd Backup :fine if exist d:\Backup\Log ( ECHO La cartella d:\Backup\Log esiste già goto process ) else ( ECHO La cartella d:\Backup\Log non esiste e sarà ora creata ) md Log goto fine :process cd Log cd.. :fine cd\ c: cd\ copia.bat | wtee.exe "D:\Backup\Log\copia %data% %time%.txt" backup.bat | wtee.exe "D:\Backup\Log\backup %data% %time%.txt" cd\ exit
il secondo file che si chiama backup.bat per sicurezza reimposta la tabella di codici per leggere correttamente le lettere accentate di un file txt poi imposta la variabile data da date cambiando gli / in - per non avere problemi con le directory dopo verifica la presenza della directory principale di backup ed in mancanza la crea poi verifica la presenza di una directory chiamata "Compressi" ed in mancanza la crea poi verifica la presenza di una directory chiamata "Fnet" ed in mancanza la crea in questa cartella verranno creati i file compressi del gestionale poi verifica la presenza di una directory chiamata "Documenti" ed in mancanza la crea poi verifica la presenza anche della cartella "Completo" ed in mancanza crea qui ci sarà un file compresso iniziale di tutti i documenti e un secondo file compresso sempre aggiornato con tutti i file modificati poi verifica la presenza anche della cartella "Incrementale" ed in mancanza crea in questa cartelle verranno creati i file compressi con i soli file modificati dall'ultimo backup singolarmente non assieme a tutti i file poi verifica che il file documenti.7z esista che è il file che viene usato come base per gli aggiornamenti ed eventualmente lo crea in mancanza di esso crea anche un file "documenti completo data ora.7z" poi crea un file new.7z con i file modificati dall'ultimo backup in seguito lo sposta nella cartella "Incrementale" rinominandolo "documenti data ora.7z in seguito aggiorna il file documenti.7z che usa come base per la creazione dell'incrementale dopodiche crea un file chiamato "fnet data ora.7z" che conterrà tutti i file del gestionale finito questo torna al salva.bat per chiudere tuttocodice:@echo off setlocal :: imposta i caratteri di Windows, dato che nelle prossime righe sarà letto un file txt :: (per leggere correttamente i caratteri accentati) chcp 1252 :: imposta la variabile data con la data odierna set data=%date% :: cambia / con - altrimenti fa casino con le directory :-) set data=%data:/=-% :: verifico la presenza delle cartelle per il backup ed eventualmente le creo d: cd\ if exist d:\Backup ( ECHO La cartella d:\Backup esiste già goto process ) else ( ECHO La cartella d:\Backup non esiste e sarà ora creata ) md Backup cd Backup goto fine :process cd Backup :fine if exist "d:\Backup\Non Compressi" ( ECHO La cartella d:\Backup\Non Compressi esiste già goto process ) else ( ECHO La cartella d:\Backup\Non Compressi non esiste e sarà ora creata ) md "Non Compressi" cd "Non Compressi" goto fine :process cd "Non Compressi" :fine if exist "d:\Backup\Non Compressi\Fnet" ( ECHO La cartella d:\Backup\Non Compressi\Fnet esiste già goto process ) else ( ECHO La cartella d:\Backup\Non Compressi\Fnet non esiste e sarà ora creata ) md Fnet cd Fnet cd.. goto fine :process cd Fnet cd .. :fine if exist "d:\Backup\Non Compressi\Documenti" ( ECHO La cartella d:\Backup\Non Compressi\Documenti esiste già goto process ) else ( ECHO La cartella d:\Backup\Non Compressi\Documenti non esiste e sarà ora creata ) md Documenti cd Documenti cd.. goto fine :process cd Documenti :fine cd\ c: 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 xcopy "f:\fnet\*.*" "d:\Backup\Non Compressi\Fnet\Fnet %data% %time%" /c /v /f /i /s /e /k /r /h /y /z /Exclude:lista.Txt @echo off cd\ c: cd\
quello che vorrei capire è come posso procedere per "portare" gli script su linux e se potrei incorrere in qualche problema???codice:@echo off setlocal :: imposta i caratteri di Windows, dato che nelle prossime righe sarà letto un file txt :: (per leggere correttamente i caratteri accentati) chcp 1252 :: imposta la variabile data con la data odierna set data=%date% :: cambia / con - altrimenti fa casino con le directory :-) set data=%data:/=-% :: verifico la presenza delle cartelle per il backup ed eventualmente le creo d: cd\ if exist d:\Backup ( ECHO La cartella d:\Backup esiste già goto process ) else ( ECHO La cartella d:\Backup non esiste e sarà ora creata ) md Backup cd Backup goto fine :process cd Backup :fine if exist d:\Backup\Compressi ( ECHO La cartella d:\Backup\Compressi esiste già goto process ) else ( ECHO La cartella d:\Backup\Compressi non esiste e sarà ora creata ) md Compressi cd Compressi goto fine :process cd Compressi :fine if exist d:\Backup\Compressi\Fnet ( ECHO La cartella d:\Backup\Compressi\Fnet esiste già goto process ) else ( ECHO La cartella d:\Backup\Compressi\Fnet non esiste e sarà ora creata ) md Fnet cd Fnet cd.. goto fine :process cd Fnet cd .. :fine if exist d:\Backup\Compressi\Documenti ( ECHO La cartella d:\Backup\Compressi\Documenti esiste già goto process ) else ( ECHO La cartella d:\Backup\Compressi\Documenti non esiste e sarà ora creata ) md Documenti cd Documenti goto fine :process cd Documenti :fine if exist d:\Backup\Compressi\Documenti\Completo ( ECHO La cartella d:\Backup\Compressi\Documenti\Completo esiste già goto process ) else ( ECHO La cartella d:\Backup\Compressi\Documenti\Completo non esiste e sarà ora creata ) md Completo goto fine :process cd Completo cd .. :fine if exist d:\Backup\Documenti\Compressi\Incrementale ( ECHO La cartella d:\Backup\Compressi\Documenti\Incrementale esiste già goto process ) else ( ECHO La cartella d:\Backup\Compressi\Documenti\Incrementale non esiste e sarà ora creata ) md Incrementale goto fine :process cd Incrementale cd\ :fine :: verifica se il file documenti.7z esiste: :: - se esiste, lo aggiorna nel nuovo file :: - se non esiste, lo crea d: cd\ cd Backup cd Compressi cd Documenti cd Completo if exist "documenti.7z" ( ECHO Il file Documenti.7z esiste ora lo aggiorno goto ritorno ) else ( ECHO Il file documenti.7z non esiste e sarà ora creato ) @echo on "C:\Programmi\7-Zip\7z.exe" a -r -x@"c:\lista.txt" -y -mx=9 "documenti.7z" "f:\documenti\*.*" copy documenti.7z "documenti completo %data% %time%.7z" @echo off goto ritorno :ritorno :: Crea il file incrementale documenti con i file modificati dall'ultimo backup @echo on "C:\Programmi\7-Zip\7z.exe" u "documenti.7z" -u- -up0q0r2x0y2z0w2!new.7z -mx=9 "f:\documenti\*.*" -r -x@"c:\lista.txt" -y move new.7z "d:\Backup\Compressi\Documenti\Incrementale\documenti %data% %time%.7z" @echo off :: Aggiorna i file documenti.7z :: (se è appena stato creato, non dovrebbe aggiornare nulla) @echo on "C:\Programmi\7-Zip\7z.exe" u -r -x@"c:\lista.txt" -y "documenti.7z" -mx=9 "f:\documenti\*.*" @echo off cd\ d: cd\ cd Backup cd Compressi cd Fnet ::creo il backup di Fnet @echo on "C:\Programmi\7-Zip\7z.exe" a -r -x@"c:\lista.txt" -y -mx=9 "fnet %data% %time%.7z" "f:\fnet\*.*" @echo off endlocal cd\
vorrei rimanere su uno script fatto da me non usando programmi tipo cobian per windows in quanto così è più scalabile e modulare in quanto magari in un futuro potrei aver bisogno di funzionalità maggiori o modifiche che magari un programma non mi permetterebbe per fare un piccolo esempio il file lista.txt contiene una lista di file da escludere dalla copia e dalla compressione se volessi aggiungere o togliere qualche file mi basterebbe aprire il file e fare le modifiche di conseguenza tutte le modifiche vengono fatte per tutte le copie e le compressioni eventualmente con programmi tipo cobian questa modifica dovrei farla su tutti i task singolarmente invece con il file lista.txt potrei anche modificarlo da remoto sul mio pc e poi ricopiarlo magari tramite ftp o altro accesso remoto tipo teamviwer ecc....
vorrei anche consigli su eventuali componenti non necessari che posso rimuovere dall'installazione standard oppure componenti necessari che dovrei installare ( so che molti diranno che potrei evitare di installare l'interfaccia grafica che per queste cose serve a poco ma quella vorrei lasciarla per comodità )
naturalmente qualcunque consiglio e/o suggerimento è sempre ben accetto e preso in considerazione
Spero di aver scritto tutto e sopratutto di non aver sbagliato sezione ( in questo caso chiedo ai moderatori di spostarla nella sezione più appropiata )


Rispondi quotando