Table of Contents
Sync Definition Files
Sync definition files, have a file suffix of .ttidef and can be edited using a plain text editor such as Notepad or vi.
The purpose of a definition file is to provide the translations to TapeTrack on how to extract the required information from the source file, including location and format of the data.
All TapeTrack command line programs, including Sync, will look for a definition file named default.ttidef in the directory they are executed in unless the name and location of the definition file is named in the program call.
Creating A Definition File
Using a text file editor create a file, using a descriptive name, with a suffix .ttidef (eg customer_ACME.ttidef).
In Windows install, save this file to the TapeTrack\TapeTrack Sync\etc directory. You will also notice a sample ttidef file here that was created when Sync was installed.
Adding Definition Statements
The definition statements required vary on the format of the source file, what information is required for extraction and translations needed on the extracted data.
CSV Source File
sample CSV file: CSV_source.csv
volume,barcode,family,type,location,pool 000000L6,000000L6,tape,LTO,Library,weekly_full,2021-07-21 000001L6,000001L6,tape,LTO,Offsite,weekly_full,2021-10-14 000002L6,000002L6,tape,LTO,Offsite,weekly_full,2021-07-21 000003L6,000003L6,tape,LTO,Offsite,weekly_full,2021-07-21 000004L6,000004L6,tape,LTO,Racking,weekly_full,2021-10-14 000005L6,000005L6,tape,LTO,Library,yearly_full,1970-01-01 000006L6,000006L6,tape,LTO,Racking,weekly_full,2021-07-21 000007L6,000007L6,tape,LTO,Racking,weekly_full,2021-10-14 CLN00012,CLN00012, CLN,LTO,,Cleaning_Tape,
Add File Type Directives
As we are using a comma delimitered CSV file we let the Sync engine know what the delimiter is.
setCSVDelimiter(",");
Add Exclusion Directives
Skip any line starting with volume, as it is a heading and not a Volume Skip any Volume that starts with CLN.
AddString(EXCLUSION, 0, "volume*"); AddExclusionOnValue(VOLUME, "CLN*");
Setting Literal Values
Sync constants, such as Customer-ID and Media-ID, can be set using literal values as these values do not change. Set Scratch to true.
setLiteral(CUSTOMER, "ACME"); setLiteral(MEDIA, "LTO"); setLiteral(SCRATCH, "True");
Define Fields
Definition fields to pass date format to Sync engine, Y=YYYY (y-YY), m=mm, d=dd. Permanent date value sets the specified date to Permanent or no next move date.
SetMoveDateFormat("%%Y/%%m/%%d"); SetPermanentDateValue("1971-01-01");
Extract Data Fields
Extract Volume-ID from column 1, length 10 Remove spaces from Volume-ID in case it is less than 10 digits
Extract(VOLUME, 1, 10, 0); RemoveSpaces(VOLUME);
Extract Location from column 4, length 20 Remove spaces from location in case it is less than 20 digits
Extract(REPOSITORY, 4, 20, 0); RemoveSpaces(REPOSITORY);
Extract Description from column 5, length 30 Remove Spaces from Description in case it is less then 30 characters
Extract(DESCRIPTION, 5, 30, 0); RemoveSpaces(DESCRIPTION);
Extract Movedate from column 5, length 11
Extract(MOVEDATE, 5, 11, 0);
Translate Fields Directly
Translate Repository data to TapeTrack Repository-ID's Offsite = OFFS Library = LIBR Racking = RACK
AddTranslation(REPOSITORY, "Offsite", "OFFS"); AddTranslation(REPOSITORY, "Library", "LIBR"); AddTranslation(REPOSITORY, "Racking", "RACK");
Translate Fields Indirectly
Translate Scratch value, set to False if Volume location is Offsite
AddTranslation2(SCRATCH, REPOSITORY, "OFFS", "False");
Complete Definition File
setCSVDelimiter(","); setLiteral(CUSTOMER, "ACME"); setLiteral(MEDIA, "LTO"); setLiteral(SCRATCH, "True"); Extract(VOLUME, 1, 10, 0); RemoveSpaces(VOLUME); Extract(REPOSITORY, 4, 20, 0); RemoveSpaces(REPOSITORY); Extract(DESCRIPTION, 5, 30, 0); RemoveSpaces(DESCRIPTION); SetMoveDateFormat("%%Y/%%m/%%d"); Extract(MOVEDATE, 5, 11, 0); AddString(EXCLUSION, 0, "volume*"); AddExclusionOnValue(VOLUME, "CLN*"); AddTranslation(REPOSITORY, "Offsite", "OFFS"); AddTranslation(REPOSITORY, "Library", "LIBR"); AddTranslation(REPOSITORY, "Racking", "RACK"); AddTranslation2(SCRATCH, REPOSITORY, "OFFS", "False");