Home > Domino Server , Lotus Notes Tutorial , LotusScript > Way to Backup di Lotus Notes di Windows Directory

Modo di backup di Lotus Notes di Windows Directory

Qui a rottura Par, facciamo backup giornalieri di tutti i file HTML nostri clienti ad una macchina di backup. Il backup è stato fatto tramite un file batch di Windows utilizzando il comando XCOPY per copiare tutti i file che era stato modificato. Abbiamo fatto questo per lungo tempo senza pensarci troppo.

Recentemente, abbiamo dato un'occhiata alla directory e notò che c'era un file aggiuntivo nella sottodirectory di backup che non esisteva nella directory principale. Dopo alcune ricerche, abbiamo determinato che i file sono stati cancellati nella directory principale e mai cancellati nella sottodirectory. Dopo un po 'di ricerca, siamo stati in grado di capire come ottenere una copia di backup vero usando solo i file batch di Windows.


Tutte queste dichiarazioni andranno in un file batch di Windows (estensione. Bat) che è in programma attraverso lo scheduler di Windows (si può anche utilizzare il Windows "a" comando per pianificare l'operazione, ma il programmatore fornisce un'interfaccia grafica per le operazioni pianificate). Il programma è in programma sul server di backup.

La prima istruzione si connette al server di produzione nel mappare una unità di rete.

usare p net: \ \ production_server \ data_share_name my_password / USER: Administrator / PERSISTENTE: No

p: indica la lettera dell'unità che verrà utilizzato sul server di backup (in cui il file batch verrà eseguito).
production_server è il nome host (un indirizzo IP può essere utilizzato) del server di produzione.
data_share_name è il nome di condivisione della directory dei dati (in cui i file HTML del cliente vengono memorizzati) sul server di produzione. Questo è il nome dato alla quota - non si deve usare le condivisioni di default (C $, ecc) che vengono con Windows. Al contrario, definire la vostra parte e specificare gli utenti che possono accedere a tale condivisione.
my_password è la password necessaria per l'utente di fare il login MOLTO IMPORTANTE - la password è elencato nel file batch. Questo può o non può essere un problema di sicurezza per l'ambiente.
/ USER: Administrator è il nome dell'utente che sarà accedendo alla condivisione. Questo dovrebbe essere un ID che ha letto l'accesso alla directory HTML sul server di produzione. Non è necessario il nome per essere effettivamente "Amministratore" - anzi, direi che non si deve usare il nome utente amministratore per questo processo (tanto più che la password è in bella vista a chiunque cerchi il file batch) . Se si utilizza un ID che ha accesso in sola lettura alla directory HTML, allora non è tanto di un problema.
/ PERSISTENTE: No indica che l'unità non deve essere ricollegato automaticamente al login. Questa unità è solo andare a essere usato durante la durata del file batch.

Dopo l'unità è stata mappata, il passo successivo è quello di copiare tutti i file dalla directory di produzione HTML nella directory di backup HTML.

XCOPY p: \ html \ *.* e: \ html \ *.* / E / D / C / D / Y

p: \ html \ *.* è la directory sorgente (la directory sul disco mappato). Saremo copiare tutti i file.
e: \ html \ *.* è la directory di destinazione.
/ E indica che ci sarà la copia di directory e sottodirectory, comprese le sottodirectory vuote.
/ D dice di copiare i file dopo una certa data. Poiché nessuna data effettiva è specificata, allora copia i file in cui la data di destinazione è più vecchia della data sorgente. Questo è esattamente ciò che vogliamo per il backup - solo copiare i file che sono stati modificati sul server di produzione.
/ C dice di continuare a copiare anche in caso di errori.
/ Q indica la modalità "silenzioso" - i nomi dei file non verrà mostrato durante la copia. Dato che il file batch viene eseguito come un compito pianificate di Windows, non c'è bisogno di mostrare i nomi dei file.
/ Y racconta la copia per richiedere non quando i file vengono sovrascritti.

Ora arriva la parte difficile. Abbiamo bisogno di cancellare i file e le directory dal server di backup che non sono più sul server di produzione. Questo viene fatto in due fasi - prima i file e le directory secondo. Ogni fase ha tre fasi:

e dir: \ html \ *.* / D:-D / B / O: N / S>> e: \ filelist.txt

Questo è il primo passo. Fai un elenco di directory di tutti i file nella directory di backup HTML.
/ D:-D, dice che le directory non devono essere inclusi. Quindi siamo solo inclusi i file.
/ B elenca solo i nomi dei file (invece di un elenco di directory regolare che mostra le dimensioni dei file e un sacco di altre cose).
/ O: N ordina i nomi dei file in ordine alfabetico.
/ S sottodirectory attraversa.
>> E: \ filelist.txt reindirizza l'output in un file chiamato e: \ filelist.txt.

Ecco il secondo passo della prima fase:

per / F "tokens = 2, * delims = \"% e% in (e: \ filelist.txt) NON ESISTE se p: \ html \%% f del e: \ html% f \%

Questa affermazione passa attraverso tutte le voci elencate nel file appena creato. Si scopre l'esistenza del file sul server di produzione. Se il file non esiste sul server di produzione, viene eliminato dal server di backup.
per / F è un particolare tipo di dichiarazione loop nella programmazione batch. Si passerà attraverso tutte le linee in un file di testo (il nome del file tra parentesi).
tokens = 2, * specifica quali token (un "token" verrà spiegato in dettaglio più avanti) dal file di testo verrà letto. 2 dice di leggere il segno 2, e * dice di prendere tutto dopo il token 2. Quei 2 valori (il token 2 ° e tutto ciò dopo il token 2) saranno inseriti in variabili.
delims = \ specifica il delimitatore per la definizione del token. Le voci dalla directory sarà qualcosa di simile e: \ html \ File1.htm oppure e: \ html \ subdir1 \ file2.htm. Il carattere "\" viene usato per suddividere la stringa fino in token. Così il token prima sarà e:, il token 2 sarà html e tutto ciò dopo il token 2 sarà File1.htm nel primo esempio e subdir1 \ file2.htm nel secondo esempio. Notate come nel 2 ° esempio la "\", che in precedenza era un delimitatore, è ora parte della stringa. Questo perché il * è stato utilizzato nella dichiarazione token.
%% E specifica il nome della variabile. Due segni% viene utilizzato perché è all'interno di un file batch. Se tu fossi prove in una finestra di prompt dei comandi, allora si dovrebbe utilizzare un solo segno%. Il segno% primo è un carattere di "escape" (proprio come "\" nella formula di linguaggio Note). Il modo in cui le variabili di lavoro, questa lettera specifica la prima variabile (la prima parte di "tokens =") e ogni altra variabile sarà chiamato in sequenza. Così il token 2 andrà in "% e" variabile e tutto ciò dopo il token 2 andrà in una variabile chiamata "% f".
in (e: \ filelist.txt) queste sono richieste dalla for / F dichiarazione. Il nome del file è all'interno delle parentesi.
se non esistono per ogni riga del file di testo, ci accingiamo a verificare l'esistenza di un nome di file. Vogliamo verificare se il file non esiste.
p: \ f% html \% questo è il file che stiamo cercando. Si noti come stiamo usando la "% f" variabile spiegato sopra. Si noti inoltre che ancora una volta dobbiamo usare "%%" all'interno del file batch. Così nel primo esempio di cui sopra, saremo verifica per p: \ html \ File1.htm e nel secondo esempio, ci sarà la verifica per p: \ html \ subdir1 \ file2.htm. Questo è dove il vantaggio di usare il "*" nel token mostra realmente. Non importa quante sottodirectory profondo il file si trova, tutte le barre saranno inclusi. Se abbiamo specificato gettoni esatta, allora si otterrebbe molto di più complicato con le sottodirectory nidificate.
del e: \ f% html \% dice di cancellare il file dal server di backup, se non esiste sul server di produzione. Ancora una volta, la "f%%" funziona allo stesso modo - la variabile è in uso.

Per la fase finale della prima fase, di cancellare il file temporaneo, ora che è stato elaborato:

del e: \ filelist.txt

La fase successiva prende gli stessi tre passi, ma lo applica alla sottodirectory. Mi limiterò a elencare le tre affermazioni ed evidenziare (in blu) le dichiarazioni che sono diversi:

dir e: \ html \ *.* / A: D / B / O: N / S>> e: \ filelist.txt
per / F "tokens = 2, * delims = \"% e% in (e: \ filelist.txt) fare se NON ESISTE p: \ html \%% f rmdir e: \ html% f \%
del e: \ filelist.txt

Questa volta attraverso, facciamo un elenco di file di testo solo sottodirectory (/ A: D). Se la directory non esiste sul server di produzione, quindi rimuovere la directory dal server di backup.

Infine, dopo che i file sono stati copiati i file cancellati e rimossi dal server di backup, l'ultima istruzione del file batch si scollega l'unità mappata di rete:

net use p: / DELETE

La stessa lettera di unità che è stato indicato in precedenza deve essere utilizzato e l'/ DELETE dice di scollegare l'unità.

Ecco, questo è il nostro file batch. Esso consente al server di backup di tutti i giorni (o più spesso, a seconda di come spesso si esegue il file batch attraverso un programma) hanno un duplicato della directory HTML produzione per scopi di disaster recovery.

Visto 7406 volte da 2162 spettatori

  1. 10 Giugno 2010 alle 13:19 | # 1

    Lavoro formidabile! Questo è il tipo di informazioni che dovrebbero essere condivise in tutto il web. Vergogna sui motori di ricerca per il posizionamento non questo post più in alto!

  2. James G Despain
    25 dic 2010 alle 05:07 | # 2

    Mi piace molto il tuo post. Spero che questo blogpost aiuterà altre persone. Ci scusiamo per il breve recensione.

  1. Nessun trackback ancora.