Jump to content

FM Data Migration Tool correct installeren


Recommended Posts

Posted

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>]

 

Posted

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.

Posted

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

  • 4 years later...
Posted

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.

  • 1 year later...
Posted

Bij FMServer wordt tegenwoordig de FMDataMigrationTool standaard meegeïnstalleerd (zie ook de vorige post hier) en op MacOS gebruik ik al een tijd een zsh-script om snel een paar clones te voorzien van de live-data. Het scriptje werkt prima, maar bij mijn Windows klanten (>90%) moest ik dan de data naar mijn Mac halen en dan het script uitvoeren.

In het kader van bijvoorbeeld iso 27001 is dat niet helemaal de bedoeling en OttoMatic is een prachtige tool, maar dat is toch niet zo mijn ding. Vandaag maar eens aan het 'powershellen' geslagen en een Windows-scriptje gemaakt.Het resultaat zit in de attachment.

De instructie is heel eenvoudig:

  1. FMDMT moet zijn geïnstalleerd (en als je dat handmatig hebt gedaan, dan moet je $path uitbreiden met een verwijzing naar fmdmt, heb je fms >19.6.1 geïnstalleerd, dan is dat niet nodig. FMDMT is dan al geïnstalleerd en dan werkt dit 'uit de doos')
  2. Pak de zip uit en zet de map, met daarin 3 mappen, het script en de readme op een plek waar je voldoende schijfruimte hebt voor een conversie
  3. Zet de klonen in de map 'Clones' en zorg dat de namen van alle klonen eindigen op: ' Clones.fmp12' Is jouw systeem Nederlands, dan eindigen de bestandsnamen mogelijk op: ' Kloon.fmp12' en dan moet je ofwel die namen aanpassen, danwel het script 😁
  4. Zet de 'oude' bestanden met de data in de map 'Old'
  5. Dubbelklik op het bestand 'FmDataMigration.ps1' en geef de gebruikersnaam en wachtwoord op waarmee een datamigratie mag worden uitgevoerd (een [Full Access]-account kan natuurlijk ook). Het script doet wél de aanname dat één account overal past. Zo niet, dan zal je de conversie in etappes moeten uitvoeren.
  6. De geconverteerde bestanden worden in de map 'New' geplaatst.

Gebruik is uiteraard volledig voor eigen risico en eventuele vragen kan je hier stellen ;-) 

FMDMT Windows.zip

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...