{"id":694,"date":"2011-07-29T18:17:17","date_gmt":"2011-07-29T16:17:17","guid":{"rendered":"http:\/\/www.data-protector.org\/wordpress\/?p=694"},"modified":"2015-12-10T09:49:38","modified_gmt":"2015-12-10T08:49:38","slug":"data-protector-migration-unix-to-other-os","status":"publish","type":"post","link":"https:\/\/www.data-protector.org\/wordpress\/2011\/07\/data-protector-migration-unix-to-other-os\/","title":{"rendered":"Data Protector Migration Unix to other OS"},"content":{"rendered":"<p>Are there many good reasons to change from Data Protector on Unix to a different operating system? I do not know many&#8230;&nbsp;However,&nbsp;there are customers required to do this step and to migrate to Windows or Linux;&nbsp;often combined with a upgrade to the current version of Data Protector.&nbsp;And here the story starts:&nbsp;there is no path for migration available.&nbsp;The reason is simple,&nbsp;the DCBF folders are not compatible between Unix and Windows nor is there a chance to do an export and import of the internal database.&nbsp;The DCBF folders on HP-UX are stored in big-endian format and on Linux in little-endian format and there is no tool for translation available.&nbsp;What the difference is can be search at your favorite search engine.<\/p>\n<p>The article is somehow larger than usual,&nbsp;you&#8217;ll need  30 minutes to work through,&nbsp;the article is addressed to experts.&nbsp;At the end of this article you&#8217;ll find the link to the export and import scripts.<\/p>\n<p>Because of the problems described above the migration from HP-UX Cell to windows is limited to copy the folder <code>\/etc\/opt\/omni<\/code> (backup jobs,&nbsp;schedules,&nbsp;&#8230;).&nbsp;To allow a easy migration for the rest of your Data Protector environment I show the steps I did for migration from HP-UX 11.11 &#8211; DP 6.11 to Windows 2008 R2 &#8211; DP 6.2.&nbsp;The most important part during the migration is to import your old media into the new cell.&nbsp;I have customers with 500 and up to 2000 media to be imported into the new environment.&nbsp;With the import of your media only you recreate your history (restore chain),&nbsp;as during the import the DCBF folders will fill up and the filename versions are imported.&nbsp;Many customers do eschew to import media as they do not know that a command is available since Data Protector 6.11 was introduced.&nbsp;This command allows you to export the catalog to a file.<\/p>\n<p>In this article the migration is shown for a migration from HP-UX 11.23 to Windows 2008 R2;&nbsp; the steps enable you to do a successful migration.&nbsp;The documented steps are one of many ways to do a migration.&nbsp;Please refer to the requirements at the end of this article otherwise your migration might fail.<\/p>\n<p>During the migration following major steps were done:\n<\/p>\n<p style=\"padding-left: 30px;\"><b>1<\/b> Installation of the new cell server on Windows 2008 R2<\/p>\n<p style=\"padding-left: 30px;\"><b>2<\/b> Library \/ Drive:<\/p>\n<p style=\"padding-left: 60px;\"><b>2.1<\/b> physical move to the new cell server (SCSI Library)<\/p>\n<p style=\"padding-left: 60px;\"><b>2.2<\/b> Zoning changes for the new cell server (FC Library)<\/p>\n<p style=\"padding-left: 30px;\"><b>3<\/b> Configuration of the new cell server:<\/p>\n<p style=\"padding-left: 60px;\"><b>3.1<\/b> global,<\/p>\n<p style=\"padding-left: 60px;\"><b>3.2<\/b> omnirc,<\/p>\n<p style=\"padding-left: 60px;\"><b>3.3<\/b> Additional DCBF folders,&nbsp;i.e.:<\/p>\n<p style=\"padding-left: 90px;\"><code>omnidbutil -add_dcdir \"D:\\ProgramData\\OmniBack\\db40\\dcbf1\" -seq 1<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnidbutil -add_dcdir \"D:\\ProgramData\\OmniBack\\db40\\dcbf2\" -seq 2<\/code><\/p>\n<p style=\"padding-left: 60px;\"><b>3.4<\/b> Additional Filenames Extension Files,&nbsp;i.e.: (repeating this step adds more extensions)<\/p>\n<p style=\"padding-left: 90px;\"><code>omnidbutil -extendfnames \"D:\\ProgramData\\OmniBack\\db40\\datafiles\\cdb\" -maxsize 2047<\/code><\/p>\n<p style=\"padding-left: 60px;\"><b>3.5<\/b> additional optimizations as needed (i.e.: Archiving &#8211; see article with obrindex.dat)<\/p>\n<p style=\"padding-left: 30px;\"><b>4<\/b> Deactivate the schedule on the old cell server using the command <code>\/opt\/omni\/sbin\/omnitrig -stop<\/code> (this will remove the trigger from crontab)<\/p>\n<p style=\"padding-left: 30px;\"><b>5<\/b> Export of the clients off the old cell using the command <code>omnicc -export_host &lt;Hostname&gt;<\/code>,&nbsp;use the same name as found in cell_info file.&nbsp;To automate this step you could <code>\"cat\"<\/code> the cell_info file and print the hostname using awk,&nbsp;the output can be used within a shell script.&nbsp;Important: do not forget to save the output as you need the host names for the import process.&nbsp;Example for the export:<\/p>\n<p style=\"padding-left: 60px;\"><code>MYHOSTS=$(cat \/etc\/opt\/omni\/config\/server\/cell\/cell_info | awk '{print $2}')<\/code><\/p>\n<p style=\"padding-left: 60px;\"><code>for EXPORTHOST in ${MYHOSTS}<\/code><\/p>\n<p style=\"padding-left: 60px;\"><code>do<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>\/opt\/omni\/bin\/omnicc -export_host ${EXPORTHOST}<\/code><\/p>\n<p style=\"padding-left: 60px;\"><code>done<\/code><\/p>\n<p style=\"padding-left: 30px;\"><b>6<\/b> If you own additional installation servers and you need the servers in the new cell,&nbsp;export these installation servers with <code>omnicc -export_is &lt;hostname&gt;<\/code> (save the output for the import process).<\/p>\n<p style=\"padding-left: 30px;\"><b>7<\/b> Import the clients into the new cell,&nbsp;the host names are still known from the export.&nbsp;The used command is <code>omnicc -import_host &lt;Hostname&gt;<\/code>,&nbsp;for the import the same rules apply as during the export.<\/p>\n<p style=\"padding-left: 30px;\"><b>8<\/b> Import the additional installation servers into the new cell with the command <code>omnicc -import_is &lt;hostname&gt;<\/code>.&nbsp;If you need to upgrade your installation server,&nbsp;the installation is done manually and locally on the system.&nbsp;Important:&nbsp;Do not forget to apply the patches if there are any.&nbsp;If you need a new installation server in the new cell for distribution of Linux\/Unix clients,&nbsp;a RedHat or SLES (64 Bit) system is installed very fast in VMware,&nbsp;the installation of Data Protector is done within minutes.<\/p>\n<p style=\"padding-left: 30px;\"><b>9<\/b> Upgrade your clients to the current Data Protector version using the GUI distribution mechanism (Important:&nbsp;If you still use Windows 2000,&nbsp;do not try to upgrade these clients and keep the old version as DP 6.2 does not support Windows 2000 clients any longer;&nbsp;however staying with the old version is supported for all the functions from the old version.&nbsp;You might need to have a DP 6.11 GUI for the import of your Windows 2000 clients into the new cell.).&nbsp;Please keep in mind that it might be necessary to create a SSH Key on the installation server and to distribute the key to your Linux\/Unix clients.<\/p>\n<p style=\"padding-left: 30px;\"><b>10<\/b> Creation of pools und devices on the new cell server:<\/p>\n<p style=\"padding-left: 60px;\"><b>10.1<\/b> In small enviroments the libraries,&nbsp;drives and pools can be created by hand.&nbsp;In this case you could eliminate dozens of &#8220;historical&#8221;&nbsp;pools,&nbsp;in midsize enviroments 10 pools are enough and may fit all your needs.&nbsp;The same is true for drives,&nbsp;you might want to change from blocksize 64k to the higher value  256k or 512k (depending on the used controller and drives).<\/p>\n<p style=\"padding-left: 60px;\"><b>10.2<\/b> Delete all unneeded pools per script,&nbsp;in this case all pools except <code>\"Default File\"<\/code> and <code>\"Default LTO-Ultrium\"<\/code> are deleted:<\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default AIT\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default DDS\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default DLT\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default DTF\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default Exabyte\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default Optical\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default QIC\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default SAIT\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default SD-3\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default SuperDLT\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default T10000\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default T3480\/T4890\/T9490\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default T3590\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default T3592\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default T9840\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default T9940\"<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnimm -remove_pool \"Default Tape\"<\/code><\/p>\n<p style=\"padding-left: 30px;\"><b>11<\/b> Create new pools per command,&nbsp;i.e.:<\/p>\n<p style=\"padding-left: 60px;\"><code>omnimm -create_free_pool \"FreePool\" \"LTO-Ultrium\" 60 250<\/code><\/p>\n<p style=\"padding-left: 60px;\"><code>omnimm -create_pool \"Filesystem\" \"LTO-Ultrium\" -free_pool \"FreePool\"<\/code><\/p>\n<p style=\"padding-left: 60px;\"><code>omnimm -create_pool \"Database\" \"LTO-Ultrium\" -free_pool \"FreePool\"<\/code><\/p>\n<p style=\"padding-left: 60px;\"><code>omnimm -create_pool \"DataProtectorInternalDatabase\" \"LTO-Ultrium\" -no_free_pool -no_move_free_media<\/code><\/p>\n<p style=\"padding-left: 30px;\"><b>12<\/b> Create libraries and drives:<\/p>\n<p style=\"padding-left: 60px;\"><b>12.1<\/b> Use the &#8220;Auto configure&#8221;&nbsp;function within Data Protector.<\/p>\n<p style=\"padding-left: 60px;\"><b>12.2<\/b> Use the tool sanconf,&nbsp;documentation can be found in the Client Reference Guide.<\/p>\n<p style=\"padding-left: 60px;\"><b>12.3<\/b> Download your libraries and drives using the command omnidownload on the old cell server,&nbsp;modify the files (change the cell servername),&nbsp;copy the files to the new cell server,&nbsp;create the librares and drives using the command omniupload on the new cell server.<\/p>\n<p style=\"padding-left: 60px;\"><b>12.4<\/b> Use the tool savedevices (search for it at www.data-protector.org),&nbsp;current version can be used for migrations from Windows to Windows only,&nbsp;for Unix\/Linux it must be modified.<\/p>\n<p style=\"padding-left: 60px;\"><b>12.5<\/b> As a last way export the mmdb on the old cell server and import it on the new cell server.&nbsp;At the end delete all media (as you import it with the scripts) and change the cell name,&nbsp;as the device will be created with the old cell server name.&nbsp;You might use the following commands:<\/p>\n<p style=\"padding-left: 90px;\"><code>omnidbutil -writedb -mmdb \/&lt;Export folder&gt;<\/code> &#8211;&nbsp;transfer the flder to the new cell server,&nbsp;i.e.&nbsp;to <code>c:\\temp<\/code>.<\/p>\n<p style=\"padding-left: 90px;\"><code>omnidbutil -readdb -mmdb c:\\temp<\/code><\/p>\n<p style=\"padding-left: 90px;\"><code>omnidbutil -change_cell_name [&lt;old cell server&gt;]<\/code><\/p>\n<p style=\"padding-left: 30px;\"><b>13<\/b> Copy the stuff you need from <code>\/etc\/opt\/omni<\/code> to the new cell server,&nbsp;if possible apply the unix2dos tool on the files  to change the files from unix format to dos format.&nbsp;Common folders could be:<\/p>\n<p style=\"padding-left: 60px;\"><b>13.1<\/b> barlists<\/p>\n<p style=\"padding-left: 60px;\"><b>13.2<\/b> barschedules<\/p>\n<p style=\"padding-left: 60px;\"><b>13.3<\/b> datalists<\/p>\n<p style=\"padding-left: 60px;\"><b>13.4<\/b> schedules<\/p>\n<p style=\"padding-left: 60px;\"><b>13.5<\/b> copylists<\/p>\n<p style=\"padding-left: 60px;\"><b>13.6<\/b> consolidationlists<\/p>\n<p style=\"padding-left: 60px;\"><b>13.7<\/b> integ<\/p>\n<p style=\"padding-left: 60px;\">From userlist migrate your own users only.&nbsp;The first 3-4 lines on the new cell server were created during the installation,&nbsp;overwriting this file might lead to &#8220;denied access&#8221;&nbsp;messages on the new cell server or even worse the services might not start anymore.<\/p>\n<p>So,&nbsp;the preparing work has been done and the new cell server is ready,&nbsp;next step is to get the catalog information from the old media and the import of these media into the new cell server.&nbsp;At the top of this article I already said that no media needs to be moved physically as with Data Protector 6.11 a command was introduced for that.&nbsp;The commands I used in my scripts,&nbsp;the exportcatalog.pl and the importcatalog.pl Perl script;&nbsp;on demand modify it according your requirements.&nbsp;To get these scripts working,&nbsp;I again refer to the requirements at the end of this article.&nbsp;During the export of the catalog on the Unix system the Data Protector daemons are restarted after each export.&nbsp;The reason is the high memory consumption of the RDS daemon,&nbsp;which might crash the RDS daemon.&nbsp;If you do not need that simple comment it out.&nbsp;In addition in file <code>.omnirc<\/code> I added the parameter <code>_M_ARENA<\/code> with value <code>1:32<\/code> and in file <code>rdmserver.ini<\/code> I limited the threads to 32.&nbsp;If you need additional information on these settings drop a comment or send me a mail.<\/p>\n<p>The scripts:\n<\/p>\n<p>Export:\n<\/p>\n<p style=\"padding-left: 30px;\"><b>1<\/b> The script is started using the command <code>perl exportcatalog.pl<\/code>,&nbsp;you do not need to install perl,&nbsp;the perl modules from Data Protector should be sufficient.<\/p>\n<p style=\"padding-left: 30px;\"><b>2<\/b> The script was written to be used on Unix using perl and system calls.&nbsp;On request (donation?) it will be written as shell script.<\/p>\n<p style=\"padding-left: 30px;\"><b>3<\/b> exportcatalog.pl:<\/p>\n<pre>\r\n<p style=\"padding-left: 60px;\"><code># define the pools on source cell server<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># all the pools must exist before starting the script<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># it is recommended to move 100-200 pools to the transfer pool<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># once all media are exported,&nbsp;continue with next 100-200 media<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># in this pool we search for our media<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $pool=\"_TransferPool\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># on error we move the media to failed pool<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $errorpool=\"_TransferPoolError\"; <\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># once the media is exported it will be moved to a new pool<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $successpool=\"Z_MediaExported\"; <\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># define the paths we need during the export when no search path is set<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $omni_bin=\"\/opt\/omni\/bin\/\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $omni_sbin=\"\/opt\/omni\/sbin\/\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># the directory to store the mcf files,&nbsp;a separate mount point was created for the migration<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $output=\"\/exportcatalog\"; <\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># other stuff we need<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $command;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my @media;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $media;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $mediumid;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $result;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># this will return the media ID - [XX1234L2] for all media in the transfer pool<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>$command=$omni_bin.\"omnimm -list_pool \".$pool.\" \\| awk \\'\\{print \\$2\\}\\'\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>@media=`$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># nextlines will do the export<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>foreach $media (@media)<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>{<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  # next 3 lines to restart DP in case we have a memory problem with RDS (this makes the export faster)<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  $command=$omni_sbin.\"omnisv -stop\"; `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  $command=$omni_sbin.\"omnisv -start\"; `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  $command=$omni_sbin.\"omnitrig -stop\"; `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  chomp $media;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  # remove the brackets from the media ID - [XX1234L2] --> XX1234L2<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  $media=~ s\/\\[\/\/ig;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  $media=~ s\/\\]\/\/ig;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  <\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  # we only run if we have a media<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  if (($media ne \"Medium\") && ($media ne \"\"))<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  {<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    print \"working on media: \".$media.\"\\n\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    $command=$omni_bin.\"omnimm -copy_to_mcf \".$media.\" -output_directory \".$output.\" > \".$output.\"\/\".$media.\".txt\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    $command=\"cat \".$output.\"\/\".$media.\".txt \\| grep \\'1 out of 1\\'\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    $result=`$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    if (!($result =~ \/1 out of 1 catalog\\(s\\) successfully copied to file\\(s\\).\/))<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    {<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      print \"ERROR: export of media failed - moving to error pool\\n\\n\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $command=$omni_bin.\"omnimm -move_medium \".$media.\" \".$errorpool;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    }<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    else<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    {<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      print \"SUCCESS: media exported - moving to success pool\\n\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $command=$omni_bin.\"omnimm -move_medium \".$media.\" \".$successpool;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $command=\"cat \".$output.\"\/\".$media.\".txt \\| grep \\' ('\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $result=`$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      ($dummy, $mediumid)=split(\/\\(\/,$result,2);<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $mediumid=~ s\/\\)\/\/ig;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $mediumid=~ s\/\\.\/\/ig;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $mediumid=~ s\/\\:\/_\/ig;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      chomp $mediumid;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      print \"renaming mcf file \".$mediumid.\".mcf to done_\".$mediumid.\".mcf\\n\\n\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $command=\"mv \".$output.\"\/\".$mediumid.\".mcf \".$output.\"\/done_\".$mediumid.\".mcf\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      ### you may want to ftp the files afterwards to a different server when not picked up from the UNIX server<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      $command=\"chmod 777 \".$output.\"\/done_\".$mediumid.\".mcf\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>      `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    }<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  }<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>}<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p><\/pre>\n<p>Import:\n<\/p>\n<p style=\"padding-left: 30px;\"><b>1<\/b> The script is started using the command <code>perl importcatalog.pl<\/code>,&nbsp;you do not need to install perl,&nbsp;the perl modules from Data Protector should be sufficient.<\/p>\n<p style=\"padding-left: 30px;\"><b>2<\/b> To have a ongong import of exported media you could add a scheduled task on the new cell server till the migration has been finished.<\/p>\n<p style=\"padding-left: 30px;\"><b>3<\/b> All other stuff is documented in the script.<\/p>\n<p style=\"padding-left: 30px;\"><b>4<\/b> importcatalog.pl:<\/p>\n<pre>\r\n<p style=\"padding-left: 60px;\"><code># the same pool we used during the export,&nbsp;all media will be imported here<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $pool=\"_TransferPool\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># on the UNIX server a samba shared was used to export the catalog<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># so we use the share to pickup the mcf files<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># when samba cannot be configured you could enhance the exportcatalog.pl to upload<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># the mcf files to another server using i.e.&nbsp;FTP<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># my $source=\"Z:\\\\Migration\\\\exportedmedia\\\\\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># aternate source (line above) should be used when Samba is not used<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $source=\"\\\\\\\\unixserver\\\\exportcatalog\\\\\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># our working directory and the directory when the import is done<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $destination1=\"Z:\\\\Migration\\\\working\\\\\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $destination2=\"Z:\\\\Migration\\\\done\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># other stuff we need<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $command;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my @media;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $media;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $mediumid;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>my $result;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># we copy (no movement before import was successful) the mcf file to the working directory <\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>$command=\"copy \".$source.\"done*.mcf \".$destination1; `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># we build the array of files to be imported<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>$command=\"dir \".$destination1.\"done*.mcf \/o\/b\"; @media=`$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code># next lines will do the work,&nbsp;on error the mcf file stays in the working directory until manually moved<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>foreach $media (@media)<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>{<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  chomp $media;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  print \"working on media: \".$media.\"\\n\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  $command = \"omnimm -import_from_mcf \".$destination1.\"\".$media.\" -no_pool_prefix -orig_pool -import_as_original\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  $result=`$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  if (!($result =~ \/1 out of 1 media successfully imported.\/))<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  {<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    print \"ERROR: import of media failed - renaming media\\n\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    $command=\"ren \".$destination1.\"\".$media.\" ERROR_\".$media;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  }<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  else<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  {<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    print \"SUCCESS: media imported - moving media to another location\\n\";<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    $command=\"move \".$destination1.\"\".$media.\" \".$destination2; `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>    $command=\"del \/q \".$source.\"\".$media; `$command`;<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>  }<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code>}<\/code><\/p>\r\n<p style=\"padding-left: 60px;\"><code><\/code><\/p><\/pre>\n<p>The export \/&nbsp;import of the media is done automatically using the scripts,&nbsp;no media changed necessary,&nbsp;the migration will run besides your daily work with minimal todo.&nbsp;In mixed environments with 500 media to be imported this part of the migration will take up to 1 week.&nbsp;The scripts can be downloaded here:<\/p>\n<p>[wpdm_file id=8]<\/p>\n<p>Requirements \/ Prerequisites:\n<\/p>\n<p style=\"padding-left: 30px;\"><b>1<\/b> The old cell server stays alive during the migration and till all media are imported.<\/p>\n<p style=\"padding-left: 30px;\"><b>2<\/b> The cell server name and the IP address are kept on the old cell server.&nbsp;It would be possible to change that on the old cell server,&nbsp;however in this case you&#8217;ll need emergency licenses or EVAL licenses &#8211;&nbsp;please ask yor HP partner,&nbsp;HP Partner Account Manager or HP Sales\/Presales.<\/p>\n<p style=\"padding-left: 30px;\"><b>3<\/b> The licenses are migrated to the new IP address using HP webware site.<\/p>\n<p style=\"padding-left: 30px;\"><b>4<\/b> The licenses will be imported on the new cell server when the export of the media on the old cell server has been finished &#8211;&nbsp;till this time the new cell server stays with the 60 days,&nbsp;so called Instant On Licenses.<\/p>\n<p style=\"padding-left: 30px;\"><b>5<\/b> Once the licenses are migrated to the new cell server the old cell server must be deactivated otherwise you violate the license agreement.<\/p>\n<p style=\"padding-left: 30px;\"><b>6<\/b> On the old cell server current patches are installed,&nbsp;otherwise the export of the media might fail.&nbsp;Information:&nbsp;withhin the patches from may 2011 a problem with option &#8220;Log Files,&nbsp;Log Directories,&nbsp;Log Folder,&nbsp;Log All&#8221;&nbsp;was fixed when exporting and importing media.<\/p>\n<p style=\"padding-left: 30px;\"><b>7<\/b> In file global the variable EnableMCFCompression=1 is activated.&nbsp;The variable will be used for the copy catalog session,&nbsp;the generated catalog file will be compressed.<\/p>\n<p style=\"padding-left: 30px;\"><b>8<\/b> There is sufficient disk space available for the migration.<\/p>\n<p style=\"padding-left: 30px;\"><b>9<\/b> The media are labled with barcode lable,&nbsp;if not using barcode you need to modify the script to get the right medium ID.<\/p>\n<p style=\"padding-left: 30px;\"><b>10<\/b> On the old and the new cell server perl must be installed,&nbsp;a simple check with perl -v shows the installed version.<\/p>\n<p>This great document can be found at www.data-protector.org only,&nbsp;so to all consultants and customers:&nbsp;if this article was helpful for you and you are able to profit in your projects,&nbsp;I would be glad when you honor this work with a donation (donation button on the upper right site).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Are there many good reasons to change from Data Protector on Unix to a different operating system? I do not know many&#8230;&nbsp;However,&nbsp;there are customers required to do this step and to migrate to Windows or Linux;&nbsp;often combined with a upgrade to the current version of Data Protector.&nbsp;And here the story starts:&nbsp;there is no path for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"spay_email":""},"categories":[11],"tags":[102,14,111,9,20],"translation":{"provider":"WPGlobus","version":"2.8.8","language":"en","enabled_languages":["en","de"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"de":{"title":false,"content":true,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p28cjj-bc","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":903,"url":"https:\/\/www.data-protector.org\/wordpress\/2012\/06\/backup-exec-no-longer-for-the-enterprise\/","url_meta":{"origin":694,"position":0},"title":"Backup Exec no longer for the Enterprise","date":"7. June 2012","format":false,"excerpt":"{:de}Kurz und Knapp: Symantec hat in einem Artikel f\u00fcr Backup Exec 2012 einige seiner Komponenten auf EOL - end of life - gesetzt und verliert aus meiner Sicht die F\u00e4higkeit im Enterprise Backup & Recovery L\u00f6sungen anzubieten. Der Einsatz im Mittelstand ist fragw\u00fcrdig, da auch in diesem Bereich Anwendungen wie\u2026","rel":"","context":"In &quot;Common&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2910,"url":"https:\/\/www.data-protector.org\/wordpress\/2016\/02\/data-protector-9-05-patches-build-106\/","url_meta":{"origin":694,"position":1},"title":"Data Protector 9 &#8211; GR Patches 9.05 (Build 106)","date":"29. February 2016","format":false,"excerpt":"{:en}On 2016\/02\/29 HPE released new patches for Linux, Windows and HP-UX (build 106). This is not the patch bundle 9.06. As a requirement you need to have Patch Bundle 9.05 installed. It is strongly recommended to read the full description of each patch. If you own a valid support contract\u2026","rel":"","context":"In &quot;DP A.09.00&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2891,"url":"https:\/\/www.data-protector.org\/wordpress\/2016\/02\/data-protector-8-14-patches-build-210\/","url_meta":{"origin":694,"position":2},"title":"Data Protector 8 &#8211; GR Patches 8.14 (Build 210)","date":"1. February 2016","format":false,"excerpt":"{:en}On 2016\/01\/19 and 2016\/01\/25 HPE released new patches for Linux, Windows and HP-UX. As a requirement you need to have Patch Bundle 8.14 installed. It is strongly recommended to read the full description of each patch. If you own a valid support contract you can download the patch from https:\/\/softwaresupport.hp.com.\u2026","rel":"","context":"In &quot;DP A.08.00&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3162,"url":"https:\/\/www.data-protector.org\/wordpress\/2016\/07\/script-execution-dp-9-07\/","url_meta":{"origin":694,"position":3},"title":"Script Execution with DP 9.07 &#8211; increased security","date":"15. July 2016","format":false,"excerpt":"{:en} With the introduction of HPE Data Protector 9.07 further action has been taken in the direction of security. Performing pre- and post-exec scripts might no longer permitted after the upgrade and instead an error is displayed. [Major] From: BSM@w2012rdp.localdomain \"dbbackup\" Time: 05.07.2016 11:35:01 Session post-exec script C:\\test\\startme.cmd failed. Exit\u2026","rel":"","context":"In &quot;HowTo&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3184,"url":"https:\/\/www.data-protector.org\/wordpress\/2016\/08\/data-protector-9-07-patches-build-110\/","url_meta":{"origin":694,"position":4},"title":"Data Protector 9 &#8211; GR Patches 9.07 (Build 110)","date":"22. August 2016","format":false,"excerpt":"{:en}On 2016\/08\/19 HPE released new patches for Linux, Windows and HP-UX (build 110). As a requirement you need to have Patch Bundle 9.07 installed. It is strongly recommended to read the full description of each patch. If you own a valid support contract you can download the patch from https:\/\/softwaresupport.hp.com.\u2026","rel":"","context":"In &quot;DP A.09.00&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3314,"url":"https:\/\/www.data-protector.org\/wordpress\/2017\/01\/data-protector-9-08-patches-build-113\/","url_meta":{"origin":694,"position":5},"title":"Data Protector 9 &#8211; GR Patches 9.08 (Build 113)","date":"31. January 2017","format":false,"excerpt":"{:en}On 2017\/01\/31 HPE released new patches for Linux, Windows and HP-UX (build 113). As a requirement you need to have Patch Bundle 9.08 installed. It is strongly recommended to read the full description of each patch. If you own a valid support contract you can download the patches from https:\/\/softwaresupport.hp.com.\u2026","rel":"","context":"In &quot;DP A.09.00&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/posts\/694"}],"collection":[{"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/comments?post=694"}],"version-history":[{"count":41,"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/posts\/694\/revisions"}],"predecessor-version":[{"id":2725,"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/posts\/694\/revisions\/2725"}],"wp:attachment":[{"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/media?parent=694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/categories?post=694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.data-protector.org\/wordpress\/wp-json\/wp\/v2\/tags?post=694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}