Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Freigaben wegen Serveraustausch von alten Windows-Server auf neuen Server übernehmen

Anleitung Microsoft Windows Server

Mitglied: laster

laster (Level 2) - Jetzt verbinden

01.12.2010, aktualisiert 20:13 Uhr, 18563 Aufrufe, 5 Kommentare, 4 Danke

Aufgabe: einen Windows-File-Server (in AD-Domäne) durch einen neuen Server ersetzen und alle Freigaben wieder herstellen

Der alte Fileserver musste durch einen neuen Server abgelöst werden. Auf dem alten Server existierten etwa 70 freigegebene Ordner mit unterschiedlichen Berechtigungen. Alle freigegebenen Ordner liegen unter D:\Daten
Alter Server: SRV01
Neuer Server: SRV02
Am Ende soll der SRV01 aus der Domäne genommen werden und der SRV02 nach SRV01 umbenannt werden. So kriegt der User, wenn die ganze Aktion nach Feierabend läuft, gar nichts mit und kann am nächsten Tag (wenn alles gelaufen ist) wie gewohnt weiter arbeiten.

Die erste Aufgabe besteht darin, die Dateien vom SRV01 auf den SRV02 zu kopieren. Dies geht gut mit dem TotalCommander ( http://www.ghisler.com/deutsch.htm ) oder mit ROBOCOPY.EXE, beide Programme können die Dateien inkl. NTFS-Berechtigungen kopieren.
01.
:: wir befinden uns auf SRV01 
02.
robocopy d:\daten \\srv02\d$\daten /s /e /b /XO /SEC /R:0 /W:1
Da so eine Kopieraktion einige Stunden dauern kann, startet man den Kopiervorgang 2 mal, zuerst um alle Dateien 'rüber zu bekommen'; dann, wenn alle Dateien geschlossen sind (alle Benutzer sich abgemekdet haben), nochmal für die geänderten Dateien.

Wenn alle Dateien von SRV01 nach SRV02 kopiert sind, müssen die Freigaben wieder hergestellt werden.
Dafür eignet sich das Programm RMTSHARE.EXE sehr gut. Es kann die Infos zu einer Freigabe auflisten und/oder diese erstellen.

1.) Die Freigaben mit ihren Berechtigungen vom SRV01 auslesen:
01.
rmtshare \\srv01| findstr /R "\<D:"
Das folgende Batch-Script erzeugt zwei Dateien:
_make_freigaben_cmd.txt : die Befehle zum Erstellen aller Freigaben
_make_frg_rmtshare.log : eine Liste mit den Ausgaben von RMTSHARE pro Freigabe

01.
set SRV=SRV01 
02.
set TMP=~~mf.txt 
03.
set RSH=~~rsh.txt 
04.
set JS=~~make_share.js 
05.
set OUT=~~make-cmd.tmp 
06.
set CMD=_make_freigaben_cmd.txt 
07.
set LOG=_make_frg_rmtshare.log 
08.
set TRENN=~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
09.
 
10.
echo %TRENN% > %LOG% 
11.
echo @echo off > %CMD% 
12.
 
13.
echo var src="%RSH%"; > %JS% 
14.
echo var dst="%OUT%"; >> %JS% 
15.
type _make_freigabe.js >> %JS% 
16.
 
17.
:: Alle Freigaben ermitteln 
18.
rmtshare \\%SRV%| find ":\" > %TMP% 
19.
 
20.
for /F %%i IN (%TMP%) do call :PROC1 %%i 
21.
 
22.
goto ENDE 
23.
 
24.
:PROC1 
25.
:: Aktion pro Freigabe (eine Zeile aus %TMP%) 
26.
echo [%1] 
27.
:: Freigabe-Infos von Quellserver ermitteln 
28.
rmtshare \\%SRV%\%1 > %RSH% 
29.
type %RSH% >> %LOG% 
30.
echo %TRENN% >> %LOG% 
31.
:: Freigabe Befehlsdatei erstellen 
32.
cscript /nologo %JS% 
33.
type %OUT% >> %CMD% 
34.
goto :EOF 
35.
 
36.
:ENDE 
37.
 
38.
del %TMP% 
39.
del %RSH% 
40.
del %JS% 
41.
del %OUT% 
42.
set TMP= 
43.
set RSH= 
44.
set JS= 
45.
set OUT= 
46.
set CMD= 
47.
set SRV= 
48.
set LOG= 
49.
set TRENN=
Das verwendete JavaScript (Zeile 32) wird benutzt, um die Ausgaben von RMTSHARE pro Freigabe in eine Befehlszeile zur Erstellung derselben zu 'kopieren':
_make_freigabe.js
01.
// die beiden Variablen src und dst werden vom CMD-Script in diese Datei geschrieben! 
02.
//var src="";  
03.
//var dst=""; 
04.
 
05.
// Ausgabe von RMTSHARE einlesen 
06.
var fp1 = OpenFile(src, "r");   
07.
var dat = fp1.ReadAll(); // Inhalt der Datei in msg schieben 
08.
fp1.Close(); 
09.
 
10.
var s; 
11.
var x,i,flagpm; 
12.
var _share_name; 
13.
var _path; 
14.
var _permissions; 
15.
var _CMD; 
16.
 
17.
flagpm=0; 
18.
 
19.
var fp2 = CreateFile(dst); // Befehl zur Erstellung der Freigabe 
20.
 
21.
// Nun die einzelnen Infos der Freigabe ermitteln 
22.
var zeilen = dat.split("\r\n"); 
23.
x = 0; 
24.
flag=1; 
25.
_CMD="rmtshare "; 
26.
_permissions = ""; 
27.
for (i = 0; i < zeilen.length; i++) { 
28.
  if (zeilen[i].indexOf("The command completed successfully") == 0) { 
29.
    flagpm=0; 
30.
    _CMD += _permissions; 
31.
    fp2.WriteLine(_CMD); 
32.
    x++; 
33.
  }   
34.
 
35.
  // einzelne Werte auslesen 
36.
  if (zeilen[i].indexOf("Share name") == 0) { 
37.
    _share_name = getWert(zeilen[i]); 
38.
    _CMD += _share_name + "="; 
39.
  }   
40.
  if (zeilen[i].indexOf("Path") == 0) { 
41.
    _path = getWert(zeilen[i]); 
42.
    _CMD += "\"" + _path + "\""; 
43.
  }   
44.
  if (flagpm == 1) { 
45.
    s = trimString(zeilen[i]); 
46.
    if (s.length > 0) { 
47.
	  // in s steht z.B.: "SRV01\mustermann  :  CHANGE" 
48.
	  s = aendereRecht(s);  
49.
	  //WScript.Echo("["+s+"]"); 
50.
      _permissions += " /GRANT " + s; 
51.
52.
  }    
53.
  if (zeilen[i].indexOf("Permissions") == 0) { 
54.
    // Die User/Rechte stehen in den folgenden Zeilen, bis eine Leerzeile kommt. 
55.
    flagpm++;       
56.
  }   
57.
     
58.
59.
fp2.Close(); 
60.
 
61.
/** liefert einen Wert, der hinter einer Variable steht 
62.
 *  012345678901234567890... 
63.
 * "Share name        \\srv01\daten"   --> "\\srv01\daten" 
64.
 * "Path              D:\daten" --> "D:\daten" 
65.
66.
 * @param s gesamter String 
67.
 * @return wert 
68.
 */ 
69.
function getWert(s) { 
70.
  s = s.substr(17); 
71.
  s = trimString(s); 
72.
  return s;   
73.
}   
74.
 
75.
/** String mit Useraccount : Recht ändern 
76.
 * In: "DOMAENE\mustermann  :  CHANGE" 
77.
 * Out: "DOMAENE\mustermann:C" 
78.
 */ 
79.
function aendereRecht(s) { 
80.
  var sa = trimString(s.substring(0, s.indexOf(":"))); 
81.
  var sb = trimString(s.substr(s.indexOf(":") + 1)); 
82.
  return "\"" + sa + "\":" + sb.substr(0,1); 
83.
84.
 
85.
/** Entfernt fuehrende und schliessende Leerzeichen bei einem String. 
86.
 * @param txt String mit optionalen Leerzeichen am Anfang und Ende. 
87.
 * @return String ohne Leerzeichen. 
88.
 */ 
89.
function trimString(txt) { 
90.
  if (txt != null) { 
91.
    txt = String(txt); 
92.
    txt = txt.replace(/^[\s\xA0]+/, ""); 
93.
    txt = txt.replace(/[\s\xA0]+$/, ""); 
94.
95.
  return(txt); 
96.
97.
 
98.
/** Create TextDatei. 
99.
 * @param name String kompletter Dateiname 
100.
 * @return tf  Objekt FilePointer 
101.
 */ 
102.
function CreateFile(name) { 
103.
  var fso, tf; 
104.
  fso = new ActiveXObject("Scripting.FileSystemObject"); 
105.
  tf = fso.CreateTextFile(name, true); 
106.
  return tf; 
107.
108.
 
109.
/** Open TextDatei. 
110.
 * @param name String kompletter Dateiname 
111.
 * @return tf  Objekt FilePointer 
112.
 */ 
113.
function OpenFile(name, mod) { 
114.
  var fso, tf, mode; 
115.
  if (mod == "r") { 
116.
    mode = 1; 
117.
  }   
118.
  if (mod == "w") { 
119.
    mode = 2; 
120.
  }   
121.
  if (mod == "a") { 
122.
    mode = 8; 
123.
  }   
124.
  fso = new ActiveXObject("Scripting.FileSystemObject"); 
125.
  tf = fso.OpenTextFile(name, mode); 
126.
  return tf; 
127.
128.
 
Nach Starten des Batch-Scriptes werden alle Freigaben aufgelistet (Zeile 26) und am Ende existiert die Datei _make_freigaben_cmd.txt.
In dieser Datei steht pro Zeile ein Befehl zum Erstellen einer Freigabe (Beispiel):
01.
@echo off  
02.
rmtshare \\SRV01\buchhaltung="D:\daten\buchhaltung" /GRANT "DOMAENE\buchhalter":F 
03.
rmtshare \\SRV01\werkstatt="D:\daten\werkstatt" /GRANT "DOMAENE\werkstatt":C /GRANT "DOMAENE\buchhalter":R /GRANT "DOMAENE\mueller":F 
04.
...
In dieser Datei müssen noch die Servernamen geändert werden: SRV01 -> SRV02 und die Datei muss zum Ausführen umbenannt werden -> _make_freigaben_cmd. Vorher alle Zeilen prüfen! Freigaben von Windows wie C$ oder ähnlich müssen aus dieser Datei gelöscht werden.
Dann die Datei ausführen und das Ergebnis prüfen.

Viel Erfolg!

LS
Mitglied: 60730
01.12.2010 um 23:57 Uhr
Servus,

"hättest du vor dem Servertausch" mal hier gefragt...
Aus dem Bauch heraus (seit Jahren im Einsatz) - geht das so: mag sein, das ich einzelheiten vergessen habe
Server Alt:
Robocopy quelle ziel blablub
reg export "HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares" shares.reg
Server neu
Net stop Server
reg import shares.reg
Net start Server / shutdown -r -f

Und immer dran denken - die Clients, die Office benutzen / umgeleitetete Dateien haben usw. bauen an allen möglichen und unmöglichen Stellen aus Netzlaufwerk:\pfad einen UNC und deswegen sollte man das umbenamsen eines Fileservers sein lassen.

Gruß
Bitte warten ..
Mitglied: 2hard4you
02.12.2010 um 13:32 Uhr
Moin,

kleine Anmerkung - den *alten* Servernamen kann man einfach als DNS-Alias auf den neuen Server zeigen lassen

Gruß

24
Bitte warten ..
Mitglied: GammaKappa
02.12.2010 um 13:41 Uhr
Warum so kompliziert?
Microsoft bietet mit dem "Microsoft File Server Migration Toolkit" ein sehr schönes Tool für solche Aufgaben an.
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d00e3eae-93 ...

Damit kann man auch Testläufe durchführen und die Migration so simulieren.
Das schöne an diesem Tool ist, dass man mehrere Läufe durchführen kann.
Fileserver sind i.d.R. gern besuchte Server, die wenig downtime zulassen.
Mit dem FSMT kann man die Daten bereits Tage vor der Umstellung in aller Ruhe auf den neuen Server kopieren lassen, ohne, daß die User etwas davon mitbekommen.
Am Tag der Umstellung läßt man das Tool nochmal laufen - es werden dann nur die seit dem letzten Lauf geänderten Daten übertragen.
Das Tool setzt die Berechtigungen und Freigaben automatisch und kann sogar die alten deaktivieren.

Server umbenennen, fertig.
Bitte warten ..
Mitglied: laster
02.12.2010 um 17:56 Uhr
Hallo allemiteinander,

vielen Dank für die Anmerkungen:
"reg export" war mir neu,
auch "Microsoft File Server Migration Toolkit" war mir nicht so bekannt ...

- man lernt immer dazu

vG
LS
Bitte warten ..
Mitglied: 60730
02.12.2010 um 20:17 Uhr
Salü,

"naja" dieser Assistent ist dann eher was für die SBS Klickibunti Profies

MIt Robocopy kann man(n) u.a Festlegen:

  • was gemacht werden soll, bevor kopiert wird
  • wann kopiert wird
  • was kopiert wird
  • was nicht kopiert wird

Im Gegentum zu dem Assi kann man die nötigen Schritte in ein Script packen und das Nachts nach der Datensicherung laufen lassen.

(den alten Server aus, der Domain werfen, den neuen umbenamsen) das ist doch nix weltbewegendes - das klappert ja in einem 4 Zeiler (wobei eine ganze Zeile für eine "pause" zwischen Alten raus und dem neuen den Namen des alten verpassen - benötigt wird)

Anyway - ich find jede Anleitung, die mit Liebe und Herzblut geschrieben wurde - gut.

Gruß
Bitte warten ..
Ähnliche Inhalte
Windows Server
Windows Server 2016 - Installation
Anleitung von Ah3n0bar6usWindows Server9 Kommentare

Alias Windows Server Technik Preview 2 steht als Vorabversion zum Download bereit. Ich möchte hier lediglich einen kleinen visuellen ...

Debian
Univention Corporate Server auf neue Hardware oder VM umziehen
Tipp von Adomi66Debian1 Kommentar

Bei einem Hardwarefehler oder auch generell beim Umzug auf eine neue Hardware oder bei einer P2V-Migration leistet ein Desaster-Recovery-Tools ...

Windows Server
Internet Information Server (IIS 7.5) verwendet altes Zertifikat trotz korrekter Einbindung eines neuen Zertifikates
Tipp von colinardoWindows Server

Hallo Kollegen, ich hatte eben ein Problem auf einem Windows Server 2008 R2, dass ein neu eingebundenes Zertifikat im ...

Microsoft
Windows Server Sicherung Zeitpläne anpassen
Tipp von BiGnoobMicrosoft1 Kommentar

Moing, Letztens als ich meine WSS eingerichtet habe, ist mir erst mal aufgefallen das man nur täglich oder mehrmals ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 9 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 9 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 12 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 17 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...