Jump to content

FM Data Migration Tool correct installeren


Recommended Posts

FileMaker heeft de FMDataMigration-tool uitgebracht (zie daarvoor: https://community.filemaker.com/docs/DOC-9012 ) voor zowel mac als windows (een FDS of een FBA lidmaatschap is daarvoor vereist) . In de instructie staat dat je het op iedere gewenste plaats installeren (zie https://fmhelp.filemaker.com/docs/edition/en/migration/ ).

Dat is leuk, maar je wilt het dan ook gewoon op de commandline gebruiken en liefst zonder dat er eerst met cd etc.etc. heen moet "wandelen". Op hun manier vergeet je dat het tooltje hebt én het is onhandig in gebruik. Dus bij deze even een uitleg hoe je dit tooltje op de correcte wijze kan installeren:

Op windows

is dat simpel te doen door de map fm_data_migration_17 in de map C:\Windows te plaatsten. Vervolgens pas je de path-systeem-variable aan door daaraan toe te voegen:

%Systemroot%\fm_data_migration_17\

Toevoegen van die variabele: Rechtsklikken op "Deze computer", dan "eigenschappen", daar "Geavanceerde systeeminstellingen", tabblad "geavanceerd", onderaan de knop "Omgevingsvariabelen" en daar in het onderste vlak "Systeemvariabelen" aan de parameter "Path" het extra pad toe te voegen zoals hierboven uitgelegd.

Op MacOS

is het ook niet moeilijk om te regelen, check met:

nano /etc/paths

welke paden Terminal doorloopt op zoek naar de commando's die je er opgeeft. Vervolgens kies je één van die paden of als je wilt kan je er ook eentje toevoegen, dat kan alleen wanneer je het opent met sudo nano...

Check of het pad dat je hebt gekozen ook daadwerkelijk bestaat. Bijvoorbeeld "/usr/local/bin" staat wél in paths, maar het nestaat standaard niet. Die map zal je dan dus aan moeten maken met:

sudo mkdir /usr/local/bin

Verplaats FMDataMigration vervolgens met: 

sudo mv <pad>/FMDataMigration /usr/local/bin/ 

Je kan nu meteen op iedere willekeurige plek "FMDataMigration" vanaf de commandline gebruiken, zonder dat je eerst naar die directory toe moet.

Het is wel netter om even de eigenaar goed te zetten met:

sudo chown root:wheel /usr/local/bin/FMDataMigration

 

Daarna kan je commanline (cmd, powershell of terminal) gebruiken met:

FMDataMigration -src_path <path> -clone_path <path> [<other options>]

 

Link to comment

Mooie handleiding, Menno.

Ik stoeide vandaag met een andere benadering, waarbij je de tool flexibel kan inzetten. Vrij doorvertaald aan de hand van tooltjes van bijv Soliant Consulting

- de tool opslaan in een container.

- voor source en de kloon ook een aparte container, waarin je de bestandsverwijzingen opslaat

- aparte veldjes voor alle opties.

Als je de migratie start, exporteer je de tool op een bepaalde  plek (desnoods de tempory folder) en laat je het het resultaat wegschrijven naar een logveldje. 

Nog niet geheel werkend, want op een of andere manier lijkt de tool bij de export gecorrumpeerd te raken, maar de commandline, die werkt.

Link to comment

Ik heb dan weer een beetje aan het stoeien geweest met bash. Deed me een beetje denken aan mijn msdos periode :-)

Voor de gemakkelijkheid ook even als download.

Omdat mijn development bestanden op dezelfde server staan als de productie bestanden, heb ik ze allemaal van dezelfde "dev_" prefix voorzien, hiervoor gebruikte ik de Developer Tool die in FileMaker Advanced zit. Je kan de Developer Tool instellingen ook bewaren voor een set van bestanden. Op die manier is een set van bestanden hernoemn en de bijhorende externe referenties aanpassen een kwesite van seconden. Reserveer een plaats op je schijf voor het deployment van je specifieke project. De deployment mappen verhuizen, breekt de referenties in de .sav file.

Dus... Ik maak een backup met "clone" optie op de FileMaker server van de klant, en download deze.

In myn deployment mapje heb ik volgende mappen:

  • een map "oldversion" die de productie bestanden bevat
  • een map "clones" die de lege clonen van de nieuwe release bevatten, al die files hebben dus de "dev_" prefix, en eindigen met " Clone" omdat de server de clone backups hernoemt.
  • een map "migrated" die de "dev_" files zonder de " Clone" postfix gaat bevatten, zodra het migratie script klaar is.
  • een map "upload" die de nieuwe productie bestanden bevat, nadat ik de Developer Tool gebruikt heb om ze van de "dev_" prefix te ontdoen, en de externe referenties terug te corrigeren.

Ik open een terminal venster en dan type ik:

./migrate.sh

Dan lanceer ik de Developer Tool die de gemigreerde bestanden hernoemt en ze in de upload folder plaatst.

Het enige wat me nu nog rest is de files terug naar de server te uploaden.

#!/bin/bash

extension=".fmp12"

defaultOldVersionFolder="oldversion"
defaultCloneFolder="clones"
defaultClonePre="dev_"
defaultClonePost=" Clone"
defaultTargetFolder="migrated"
defaultTargetPre="dev_"
defaultLogin="Admin"
defaultPassword=""
defaultDecryption=""
defaultOverwrite="true"
defaultIgnVL="false"
defaultIgnAcc="false"
defaultIgnFNT="false"

read -p "old version folder: [default=$defaultOldVersionFolder]" oldVersionFolder
: ${oldVersionFolder:=$defaultOldVersionFolder}

if [ ! -d "$oldVersionFolder" ]; then
  echo This directory does not exist.
  exit 1
fi

read -p "clone folder: [default=$defaultCloneFolder]" cloneFolder
: ${cloneFolder:=$defaultCloneFolder}

if [ ! -d "$cloneFolder" ]; then
  echo This directory does not exist.
  exit 1
fi

read -p "clone files prefix (all files have the same name as the old version but prefixed. Specify \"none\" if you have no prefixes): [default=$defaultClonePre]" clonePrefix
: ${clonePrefix:=$defaultClonePre}

if [ $clonePrefix == "none" ]; then
  clonePrefix=""
fi

read -p "clone files postfix (Specify \"none\" if you have no postfixes): [default=$defaultClonePost]" clonePostfix
: ${clonePostfix:=$defaultClonePost}

if [ $clonePostfix == "none" ]; then
  clonePostfix=""
fi

read -p "target folder: [default=$defaultTargetFolder]" targetFolder
: ${targetFolder:=$defaultTargetFolder}

read -p "target files prefix (Specify \"none\" if you have no prefixes): [default=$defaultTargetPre]" targetPrefix
: ${targetPrefix:=$defaultTargetPre}

if [ $targetPrefix == "none" ]; then
  targetPrefix=""
fi

read -p "login: [default=$defaultLogin]" login
: ${login:=$defaultLogin}

read -s -p "password: [default=$defaultPassword]" password
: ${password:=$defaultPassword}
echo

read -p "decryption key: [default=$defaultDecryption]" decryption
: ${decryption:=$defaultDecryption}

read -p "ignore valuelists (use CUSTOM value lists from the clone instead of the source file): [default=$defaultIgnVL]" ignVL
: ${ignVL:=$defaultIgnVL}
if [ $ignVL == "true" ]; then
	ignVL="-ignore_valuelists"
else
	ignVL=""
fi

read -p "ignore accounts (don’t transfer the account names, passwords, and the encryption password to the clone ): [default=$defaultIgnAcc]" ignAcc
: ${ignAcc:=$defaultIgnAcc}
if [ $ignAcc == "true" ]; then
	ignAcc="-ignore_accounts"
else
	ignAcc=""
fi

read -p "ignore fonts (assume no font mapping required for field contents): [default=$defaultIgnFNT]" ignFNT
: ${ignFNT:=$defaultIgnFNT}
if [ $ignFNT == "true" ]; then
	ignFNT="-ignore_fonts"
else
	ignFNT=""
fi

read -p "overwrite existing target files (true/false): [default=$defaultOverwrite]" overwrite
: ${overwrite:=$defaultOverwrite}
if [ $overwrite == "true" ]; then
	overwrite="-force"
else
	overwrite=""
fi

if [ ! -d "$targetFolder" ]; then
  mkdir $targetFolder
fi


for fileName in $oldVersionFolder/*.fmp12; do
	#extract file path
	oldDirName=$(dirname -- "$fileName")
	
	#extract file name
	fileNameWithoutPath=$(basename -- "$fileName")
	
	#extract part before dot
	fileNameWithoutExtension="${fileNameWithoutPath%.*}"

	clonePath=$cloneFolder/$clonePrefix$fileNameWithoutExtension$clonePostfix$extension
	
	migrationPath=$targetFolder/$targetPrefix$fileNameWithoutPath

	FMDataMigration -src_path "$fileName" -clone_path "$clonePath" -src_account "$login" -src_pwd "$password" -src_key "$decryption" -clone_account "$login" -clone_pwd "$password" -clone_key "$decryption" -target_path "$migrationPath" $ignVL $ignAcc $ignFNT $overwrite -v
	if [[ $? -ne 0 ]] ; then
    	echo FMDataMigration failed.
    	exit 1
	fi
done

Een heel goeie FileMaker tool is die van Claus Lavendt:

https://thebrainbasket.com/?p=543

migrate.sh

Link to comment
  • 4 years later...

Vanaf FMServer 19.6.1 wordt de FMDataMigrationTool bij de installatie van FMServer direct mee-geïnstalleerd.

Bij het gebruik en scripten van datamigraties op de Mac kan je het jezelf gemakkelijker maken door een vaste koppeling naar de tool in je /usr/local/bin/ op te nemen. De commandline herkent dan de naam en de  commando's die je dan aan FMDMT geeft door simpelweg de opdracht te beginnen met 'FMDataMigration'

Op de Mac staat de tool in: /Library/FileMaker Server/Database Server/bin/FMDataMigration en kan je een symbolic link aanmaken met:

sudo ln -s /Library/FileMaker\ Server/Database\ Server/bin/FMDataMigration /usr/local/bin/FMDataMigration

Op Ubuntu staat de tool in: /opt/FileMaker/FileMaker\ Server/Database\ Server/bin/FMDataMigration en daar kan je de de link(s) maken met:

sudo ln -s /opt/FileMaker/FileMaker\ Server/Database\ Server/bin/FMDataMigration /usr/local/bin/fmdatamigration
sudo ln -s /opt/FileMaker/FileMaker\ Server/Database\ Server/bin/FMDataMigration /usr/local/bin/FMDataMigration

Hier bij Ubuntu zijn 2 symbolic links aangemaakt, omdat in tegenstelling to MacOS, Ubuntu casegevoelig is voor de uitvoering. MacOS herkent voor de type-ahead overigens alleen FMDataMigration (toevoegen van een lowercase link blijkt niet meer mogelijk).

 

Windows is in dit geval eens een keertje gemakkelijker dan MacOS, want op Windows staat de tool hier: C:\Program Files\FileMaker\FileMaker Server\Database Server\FMDataMigration.exe, maar verder hoef je helemaal niks te doen. C:\Program Files\FileMaker\FileMaker Server\Database Server\ is in windows bij de installatie van FMServer al opgenomen in de path-environment-variable.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...