menno Posted May 18, 2018 Share 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 Link to comment
Marsau Posted June 18, 2018 Share 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 Link to comment
Peter Wagemans Posted June 19, 2018 Share 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 Link to comment
menno Posted February 17 Author Share Posted February 17 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 en mocht je ook fmdatamigration willen gebruiken, dan moet daar net als bij Ubuntu een tweede link worden toegevoegd. 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 Link to comment
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.