Using DBCOPY to Migrate a post office from NetWare or Windows to Linux

  • 7010760
  • 10-Sep-2012
  • 12-Jun-2017


Novell GroupWise 7
Novell GroupWise 8
Novell GroupWise 2012
Novell GroupWise 2014


How to mount either a NetWare volume or a Windows share to a linux server and then using DBCOPY to migrate GroupWise data to a Linux server.


The Novell GroupWise Server Migration utility is a two pass solution (First Copy and Second or Final Copy solution). Using DBCOPY in standalone mode allows for running the copy as many times as desired (First copy, Incremental copy, Final copy). It is often preferred to run it more times where a few incremental copies prior to the final migration day can be useful.
  1. Make sure that the Destination Linux server has dbcopy and gwcheck installed. Use the command "rpm -qa | grep gwcheck" and "rpm -qa | grep dbcopy" to confirm if dbcopy and gwcheck are installed. If not, please browse  to the GroupWise Software Directory\admin and use the command "rpm -ivh novell-groupwise-gwcheck*" and "rpm -ivh novell-groupwise-dbcopy*"
    NOTE:  Dbcopy and GWCheck for GroupWise 2014 are installed as part of the GroupWise 2014 Server install.  This can be run without running the Configuration.
  2. Next, please mount either the NetWare or Windows server that is hosting the source Post Office file structure that needs to be migrated.
    Use the following ncpmount command for Linux to NetWare with some switches that can help in maintaining the connection over time. If the server is a Novell Open Enterprise Server (OES) then the NCPFS is already installed. If it is just a SLES server, then the NCPFS will have to be installed.

    ncpmount -m -t 900 -r 100 -S nwserver1 -A -U admin.novell -V MAIL /mnt/nwserver1/mail
    -m = multiple
    -t = timeout
    -r = retry
    -S = server
    -A = address
    -U = user
    -V = volume
    The -t and -r above make the connection stay intact over time.

    Tip: If trying to unmount the mount point with ncpumount and the “device is busy” message comes up, try the following...

    fuser -m /mnt/ ← (whatever the mount point is) – will list what is mounted now
    /mnt/nwserver1/mail/: 14870 ← something like this is returned
    ps aux | grep 14870 ← check the pid is there
    kill -9 14870 ← Kill the pid # that is returned from ps aux above
    ncpumount /mnt/ ← (whatever the mount point is) – mount should be gone

    The follow mount command would be used for Linux to Windows, with some switches that make it communicate with the CIFS protocol to Windows.

    mount –t cifs –o username=administrator,password=password,,noserverino //winserver/gw /mnt/winserver/gw
    -t cifs = protocol type (cifs for windows)
    -o = options
    username = Windows server login account with full rights
    password = Windows server login account password
    ip = ip address of the windows server
    noserverino = us client generated inode numbers (has to do with file access)
    //winserver/gw = Linux version of the UNC path to the windows server and the share name (gw is an example)
    /mnt/winserver/gw = Linux local mount point, this path needs to exist before using the mount command.

    Note: Test the mount point on the Linux server by changing to the mount point directory and looking to see if you can access the Source server post office directory. (ie: cd /mnt/server/vol and ls).
  3. Once the Post Office has been mounted, use the dbcopy command to begin the migration. Note: Typical dbcopy throughput is 6GB/hour.

    Before using the dbcopy utility for a post office migration verify that no post office agent (POA) is running on the destination linux server. A simple command to do this is “ps –eaf | grep gwpoa | grep -v grep”. If nothing comes up. then there is no POA running.

    When using the dbcopy command, there are basically two ways to run it. The first way is used for both the Initial copy and any incremental copies. This first way can be run as many times as desired and can have the POA on the source post office server still running. The second way is used for the Final copy and requires that the post office agent on the Source post office server to be shut down.

    To run the dbcopy command open a terminal windows and change to the /opt/novell/groupwise/agents/bin directory. It is also a good idea to make the terminal session screen width as wide as possible. This allows to see the full log line entries as dbcopy runs.

    Initial copy & Incremental copy commands:
    ./dbcopy -m -k -p -w -t 10 -f /mnt/nwserver1/mail/po1 /media/nss/PO1VL/po1
    Final PO Copy command:
    ./dbcopy -m -k -p -w -t 10 -s /mnt/nwserver1/mail/po1 /media/nss/PO1VL/po1

    -m = Copies all directories and files as part of a migration.
    -k = Skips collecting database size during migration.
    -p = Indicates migration for a post office.
    -w = Continuous logging to screen.
    -t 10 = Specifies number of copy threads; default 5; range 1-10.
    -f = Indicates the first pass of the migration.
    -s = Indicates the second pass of the migration.


Many problems with the DBCOPY command can be avoided by using a correct mounting command.

Additional Information

dbcopy df28 error

When dbcopy is run in -m mode and the following error is seen in the dbcopy Log File at the end of the run:
Run "storelowercase" option on the post office
Error: Hit (df28) when running GWCheck on /groupwise/po/northpo6

Follow the steps listed below

Copy the gwenlxen.fil file from the /lib to /bin which will avoid the df28 error when dbcopy goes to run gwcheck to do the storelowercase function.

The gwcheck log file will show this at the same time:
CkEnv::LangInit - NGWLangLoadResourceTable
GWCheck database pathname: [/groupwise/po/clinpo1/ngwcheck.db]
Date and time: 05/07/10 14:28
Return code (hex): 8209
CkEnv::LangInit - LangID = en]
GWCheck database pathname: [/groupwise/po/clinpo1/ngwcheck.db]
Date and time: 05/07/10 14:28
Return code (hex): 8209
CkTask::CkTask - pEnv Create failed
GWCheck database pathname: [/groupwise/po/clinpo1/ngwcheck.db]
Date and time: 05/07/10 14:28
Return code (hex): 0000
GWCheck database pathname: [/groupwise/po/clinpo1/ngwcheck.db]
Date and time: 05/07/10 14:28
Return code (hex): DF28
dbcopy Migration Mode explained

dbcopy was initially used for backup, therefore there are some switches left there, such as -i .

For migration purposes the -m switch, -f for first stage, and -s for the second stage copies were added.  The purpose of the 2-stage copy is exactly what you try to accomplish, to shorten the time of copying. The bulk of the data is in the offiles directory. You can perform the -f stage as many times as you want. During the -f stage, no file or directory from wpcsin, wpcsout, oftemp directory will be copied over. By the time you are ready to make the -s run (the final copy), you need to stop the POA / MTA agent and make the final -s copy. It will copy everything that has not been copied over to the destination.

For -f and -s, dbcopy will verify if the file is existing at the destination before making the copy.
However, db's will always be copied again. Most of the files in the offiles directory will be skipped in the subsequent -f stage and -s stage, but dbcopy will still check their size and modified date to make the decision