menno Posted May 18, 2018 Posted May 18, 2018 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>] Quote
Marsau Posted June 18, 2018 Posted June 18, 2018 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. Quote
Peter Wagemans Posted June 19, 2018 Posted June 19, 2018 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 Quote
menno Posted February 17, 2023 Author Posted February 17, 2023 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. Quote
menno Posted February 12, 2025 Author Posted February 12, 2025 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: 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') 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 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 😁 Zet de 'oude' bestanden met de data in de map 'Old' 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. 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 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.